栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 异常处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 异常处理

1、常见异常类
异常描述
NameError尝试访问一个没有申明的变量
ZeroDivisionError除数为0
SyntaxError语法错误
KeyError请求一个不存在的字典关键字
IndexError索引超出序列范围
AttributeError尝试访问未知的对象属性
ValueError传参类型不正确
FileNotFoundError文件不存在
AssertionError断言异常 assert判断 不对就会报异常
IOError读取不存在的文件
2、异常处理
try:
    ggg
    a = 1 / 0
    int("abc")
except ValueError as e:
    print(e)
except ZeroDivisionError:
    print("除数为0")
except NameError as b:
    print("b...")
    print(b)
except Exception as a:
    print("a...")
    print(a)  
else:        # 没有任何异常发生的时候执行的
    print("没有异常") 
finally:     # 不管有没有异常和异常有没有被捕获,都会执行 
    print("I am Finally")   

except 捕获错误与触发的错误不一致,程序就捕获不到,抛出异常
如果父类异常捕获放在最前面,就会吞噬后面的子类异常

finally 不管有没有异常和异常有没有被捕获,都会执行 ,即使已经抛出异常并且已经return, finally体里面的代码都会运行

3、手动触发异常

raise手动触发异常
raise异常类(“说明信息”)
raise没有接异常类,默认抛出RuntimeError异常类

try:
    print("raise error")
    raise                           # 注:手动触发异常
    print("raise error end...")     # 注:默认RuntimeError 运行过程中的异常
except Exception as e:
    print("raise error end...")
    print(e)
# 注:raise抛出的异常类属于runtimeerror异常类

#可以手动抛出异常类,和添加说明信息
    raise IndexError("this is test error")
except Exception as e:
    print("exception error")
    print(e)
4、嵌套异常

异常处理注意事项
  • 只执行最先匹配的一个except
  • 如果父类异常在最前面,会吞噬子类所有异常
  • 多excpet注意:
    只会匹配一个except
    要先写子类异常再写父类异常
    若果except捕获的错误与触发的错误不一致,程序会捕获不到
几点建议

不建议使用异常来代替常规的检查,如 if … else判断
避免过多依赖于异常处理机制
在必要的时候,可以手动引发异常(raise)==>函数或方法

try/except/finally使用return

在finally中使用return,异常无法回溯
在函数中的try/except 语句中使用return后,仍然会执行finally 中的内容

  • finally==>正常或异常都会执行
  • return==> 直接退出函数,返回值给主程序
5、关于性能



执行脚本命令之前+time 获取命令执行的时间
可以发现for循环在try里面 好一点

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/657015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号