Python 异常处理

Python 异常处理,第1张

Python 异常处理 1、常见异常类 异常描述NameError尝试访问一个没有申明的变量ZeroDivisionError除数为0SyntaxError语法错误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里面 好一点

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5659094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存