Python异常处理

Python异常处理:

1、如何阅读异常文本:

运行代码产生如下错误信息:

def test_error_index():
    print([][0])
    # 以上命令表示打印空列表的第0个元素。
    # 因为是空列表,所以运行时肯定会发生错误。
if __name__ == '__main__':
    test_error_index()

在这里插入图片描述调用方法的地方是错误发生的本质位置,但不是最直接错误位置,第一个File是错误最近的位置,调用方法时发生错误。第二个File是更深入地方的错误位置,有些情况错误可能会很深入,所以就会打印出多行{File 文件名 行 …},单击蓝色部分可以直接跳转错误原因处,跳转最后一个File可以查看最深层错误原因。最后一行 异常名称: 详细描述 用来解释错误原因。

例如:Python常见错误:
IndexError: list index out of range # 列表越界引发的异常
1、list[index]index  # 下标越界
2、IndexError: list index out of range # list是空值
ImportError 导入模块出错引发的异常
NameError 使用不存在的变量名引发的异常           

以下网站总结了异常错误的原因可查阅:
https://www.runoob.com/python/python-exceptions.html

2、如何解决异常:

(1)用户自定义异常

通过直接或间接的方式继承自Exception类,Exception类继承自BaseException
BaseException几乎是所有异常的最远父类。

# 产生一个自定义的异常
def test_error_my():
    raise MyError("这是一个用户自己定义的异常")
    # 使用raise关键字可以抛出一个自定义的异常
(2)运用系统异常处理

按住Ctrl,左键点击此处的IndexError异常,可以看到其定义。

3、如何在在自己的程序中使用异常处理:

用try…except…finally结构处理异常:

try:
       try块
except Exception[as reason]: # 定义异常实例(except MyError as e)
       exception块
finally:
       print("不论是否有异常发生这条语句总是会在最后执行")
 # end try

try后是可能引发异常的代码,如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,则执行相应的异常处理代码,异常处理完毕,finally后代码无论是否发生异常都会执行。

4、当自己无法解决异常问题时如何寻找解决方案

可复制错误原因最后一行,网上进行搜索,网上会有各路大神提供解决方法。
在这里插入图片描述

5、什么情况下需要自己自定义异常处理

需要自定义异常的理由如下:
1)方便调试。通过抛出一个自定义的异常类型实例,我们可以使捕获代码精确地知道所发生的事情,并以合适的方式进行恢复。
2)逻辑包装。自定义异常可包装多个其他异常,然后抛出一个业务异常。
3)方便调用者编码。在编写自己的类库或者业务层代码的时候,自定义异常可以让调用方更方便处理业务异常逻辑。例如,保存数据失败可以分成两个异常“数据库连接失败”和“网络异常”。
4)引入新异常类。这使程序员能够根据异常类在代码中采取不同的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值