Python学习笔记—— 面向对象5.异常

目录

  • Python学习笔记—— 面向对象5.异常
    • 异常的捕获
      • 1. 简单的捕获异常语法
      • 2.错误类型捕获
      • 3.异常捕获完整语法
    • 异常的传递性
    • 主动抛出异常(自定义异常)
      • 1.应用场景
      • 2.抛出异常

异常的捕获

1. 简单的捕获异常语法

· 在程序开发中,如果对代码的执行在程序开发中,如果 对某些代码的执行不能确定是否正确,可以增加 try(尝试) 来 捕获异常,捕获异常最简单的语法格式:

try:尝试执行的代码
except:出现错误的处理

try 尝试,下方编写要尝试代码,不确定是否能够正常执行的代码
except 如果不是,下方编写尝试失败的代码

简单异常捕获演练 —— 要求用户输入整数

try:# 提示用户输入一个数字num = int(input("请输入数字:"))
except:print("请输入正确的数字")

2.错误类型捕获

在程序执行时,可能会遇到 不同类型的异常,并且需要 针对不同类型的异常,做出不同的响应,这个时候,就需要捕获错误类型了
语法如下:

try:# 尝试执行的代码pass
except 错误类型1:# 针对错误类型1,对应的代码处理pass
except (错误类型2, 错误类型3):# 针对错误类型2 和 3,对应的代码处理pass
except Exception as result:print("未知错误 %s" % result)

当 Python 解释器 抛出异常 时,最后一行错误信息的第一个单词,就是错误类型

※捕获未知错误
在开发时,要预判到所有可能出现的错误,还是有一定难度的
如果希望程序 无论出现任何错误,都不会因为 Python 解释器 抛出异常而被终止,可以再增加一个 except
语法如下:

except Exception as result:print("未知错误 %s" % result)

3.异常捕获完整语法

在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下:

try:# 尝试执行的代码pass
except 错误类型1:# 针对错误类型1,对应的代码处理pass
except 错误类型2:# 针对错误类型2,对应的代码处理pass
except (错误类型3, 错误类型4):# 针对错误类型3 和 4,对应的代码处理pass
except Exception as result:# 打印错误信息print(result)
else:# 没有异常才会执行的代码pass
finally:# 无论是否有异常,都会执行的代码print("无论是否有异常,都会执行的代码")

else 只有在没有异常时才会执行的代码
finally 无论是否有异常,都会执行的代码

异常的传递性

异常的传递 —— 当 函数/方法 执行 出现异常,会 将异常传递 给 函数/方法 的 调用一方
如果传递到主程序,仍然没有异常处理,程序才会被终止

提示:
· 在开发中,可以在主函数中增加 异常捕获
· 而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的 异常捕获 中
· 这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁

示例:
定义函数 demo1() 提示用户输入一个整数并且返回
定义函数 demo2() 调用 demo1()
在主程序中调用 demo2()

def demo1():return int(input("请输入一个整数:"))def demo2():return demo1()try:print(demo2())
except ValueError:print("请输入正确的整数")
except Exception as result:print("未知错误 %s" % result)

主动抛出异常(自定义异常)

1.应用场景

应用场景
在开发中,除了 代码执行出错 Python 解释器会 抛出 异常之外
还可以根据 应用程序 特有的业务需求 主动抛出异常

示例:
提示用户 输入密码,如果 长度少于 8,抛出 异常

注意:
当前函数 只负责 提示用户输入密码,如果 密码长度不正确,需要其他的函数进行额外处理
因此可以 抛出异常,由其他需要处理的函数 捕获异常

2.抛出异常

Python 中提供了一个 Exception 异常类
在开发时,如果满足 特定业务需求时,希望抛出异常,可以:
—创建 一个 Exception 的 对象
—使用 raise 关键字 抛出 异常对象

需求:
定义 input_password 函数,提示用户输入密码
如果用户输入长度 < 8,抛出异常
如果用户输入长度 >=8,返回输入的密码

def input_password():# 1. 提示用户输入密码pwd = input("请输入密码:")# 2. 判断密码长度,如果长度 >= 8,返回用户输入的密码if len(pwd) >= 8:return pwd# 3. 密码长度不够,需要抛出异常# 1> 创建异常对象 - 使用异常的错误信息字符串作为参数ex = Exception("密码长度不够")# 2> 抛出异常对象raise extry:user_pwd = input_password()print(user_pwd)
except Exception as result:print("发现错误:%s" % result)

Python学习笔记—— 面向对象5.异常相关推荐

  1. python学习笔记(面向对象,类)

    一.类的定义 1.类的基本结构 #命名规则: 驼峰法 class Student(): # 使用class 定义类a= 1 # 变量name = '小明'def aa(self): # 函数print ...

  2. Python学习笔记Task07(异常)

    Python学习笔记Task07(异常) 2.try-except语句 try 语句按照如下方式工作:l 首先,执行try子句(在关键字try和关键字except之间的语句l 如果没有异常发生,忽略e ...

  3. Python学习笔记(十九)面向对象 - 继承

    Python学习笔记(十九)面向对象 - 继承 一.继承的概念 # 继承:子类继承父类的所有方法和属性# 1. 子类 class A(object):def __init__(self):self.n ...

  4. Python学习笔记:Day 3编写ORM

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. python学习笔记4(对象/引用;多范式; 上下文管理器)

    python学习笔记4(对象/引用:多范式; 上下文管理器) ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是 ...

  6. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

  7. Python学习笔记:第十三站 接着找对象

    Python学习笔记 文章目录 Python学习笔记 第十三站 接着找对象 1. 封装 2. 继承 3. 方法重写 4. object类 5. 多态 6. 特殊方法和特殊属性 7. 类的赋值与拷贝 8 ...

  8. python学习笔记,初学者Python3

    Python学习笔记 不推荐将python作为主力语言,但推荐作为一个辅助语言,用于日常的一些小的任务 python目前主要的应用场景: 1.机器学习,人工智能 2.爬虫 3.数据分析 4.自动化,运 ...

  9. 零基础学Python学习笔记

    Python学习笔记 代码下载地址 链接:https://pan.baidu.com/s/1yGnpfq4ZHeKpt4V0J_PTSg 提取码:hmzs 1. Python 基础语法 1.1 基本数 ...

  10. Python学习笔记 day5

    Python学习笔记 day5 参考/引用资料: 1.file a.打开文件方式(读写两种方式) 缓冲 with语句 b.文件对象的操作方法 c.学习对excel及csv文件进行操作 读写excel ...

最新文章

  1. php date strtotime的用法
  2. vue cli 项目在打包时候报错解决方法
  3. 神策数据携手百丽国际,专注品牌零售行业数字化未来
  4. jzoj4226-A【图论】
  5. STM32 —— 中景园0.96寸OLED
  6. hbase shell远程连接_HBase安装详解
  7. select超过固定条数后出现滚动条_12万公里的路虎维修,两个小小的胶套损坏,导致两条后轮胎偏磨!...
  8. 微软 Edge bug 导致黑客窃取用户在任意站点的机密信息,颁发2万美元奖金
  9. 广东省的身份证号码开头
  10. 找回excel工作表保护密码
  11. tbc新服务器没消息,魔兽世界怀旧服,官方再流出TBC消息,舅舅党再次爆料燃烧的远征...
  12. 0x80070057复制从服务器复制文件,解决win10更改用户文件夹提示0x80070057的方法
  13. bingo update1
  14. 推荐系统三十六式(刑无刀)学习笔记(二)
  15. 员工身高体重决定能否晋升?自如回应
  16. A component required a bean of type ‘com.yida.data.religion.common.dao.AddressInfoMapper‘ that could
  17. 【quartus】packed unpacked array
  18. python基础-PyYaml操作yaml文件
  19. Fabric.js 橡皮擦的用法(包含恢复功能)
  20. 图片损坏打不开如何修复?

热门文章

  1. java POI为excel添加水印
  2. Thingsboard hierachy widget 和同一个dashboard不同数据的联动控制
  3. 小米手机qq不读取相册照片_小米手机qq保存的图片找不到
  4. 使用SDKMAN来安装JDK和管理多个JDK版本
  5. Mac更换JDK版本
  6. kux文件怎么打开 苹果手机如何观看kux视频
  7. 图片放大后失真不清晰,怎么办?
  8. Android 获取无线蓝牙MAC信息代码
  9. linux的通配符有哪些,Linux通配符
  10. 除了快,5G 有哪些关键技术?