Python异常处理

认识异常

通俗讲,异常就是程序运行中报的错。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行

异常的类型

Python程序运行出错时产生的每个异常类型都对应一个类,程序运行时出现的异常大多继承自Exception类,Exception类又继承自异常类的基类BaseException。Python中异常类的继承关系如下图:

异常类的继承关系

BaseException类是所有异常类型的基类,它派生了4个子类:ExceptionKeyboardInterruptGeneratorExitSystemExit。其中,Exception是所有内置的、非系统退出的异常的基类;KeyboardInterrupt是用户中断执行时会产生的异常;GeneratorExit表示生成器退出异常;SystemExit表示Python解释器退出异常。

常见异常

  1. NameError
    NameError是程序中使用了未定义的变量时引发的异常。
  2. IndexError
    IndexError是程序越界访问时引发的异常。
  3. AttributeError
    AttributeError是使用对象访问不存在的属性引发的异常。
  4. FileNotFoundError
    FileNotFoundError是未找到指定文件或目录时引发的异常。

异常捕获语句

1、使用try-except语句捕获异常

try:
   可能出错的代码
except [异常类型 [as error]]:   # 将捕获到的异常对象赋值给error
   捕获异常后的处理代码

2、异常结构中的else子句

try:
   可能出错的代码
except [异常类型 [as error]]:         # 将捕获到的异常对象赋值给error
   捕获异常后的处理代码
 else:
   没有异常的处理代码

3、异常结构中的finally子句

try:
   可能出错的代码
except [异常类型 [as error]]:           # 将捕获到的异常对象赋值给error
   捕获异常后的处理代码
 finally:
   一定执行的代码

抛出异常

Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动抛出。
1、使用raise语句抛出异常

raise 异常类                    # 格式1:使用异常类名引发指定的异常
raise 异常类对象                 # 格式2:使用异常类的对象引发指定的异常
raise                          # 格式3: 使用刚出现过的异常重新引发异常

2、使用assert语句抛出异常

assert表达式[, 异常信息]

异常的传递

如果程序中的异常没有被处理,默认情况下会将该异常传递到上一级,如果上一级仍然没有处理异常,那么会继续向上传递,直至异常被处理或程序崩溃。

如果您乐意,感谢支持~

微信赞赏码

支付宝收款码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值