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)==>函数或方法
在finally中使用return,异常无法回溯
在函数中的try/except 语句中使用return后,仍然会执行finally 中的内容
- finally==>正常或异常都会执行
- return==> 直接退出函数,返回值给主程序
执行脚本命令之前+time 获取命令执行的时间
可以发现for循环在try里面 好一点
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)