#except在捕获错误异常的时候,
是要根据具体的错误类型来捕获的
#用一个块可以捕获多个不同类型的异常
#Exception 可以捕获所有的异常当对出现的问题
或者错误不确定的情况下可以使用Exception
try:
# print(b)#捕获逻辑的代码
# li=[1,2,3]
# print(li[5])
# a=10/0
pass
except NameError as msg:
#捕获到的错误才会在这里执行
print(msg)
pass
except IndexError as msg:
#捕获到的错误才会在这里执行
print(msg)
pass
except ZeroDivisionError as msg:
#捕获到的错误才会在这里执行
print(msg)
pass
except Exception as msg:
#捕获到的错误才会在这里执行
print(msg)
#在此尽量的去处理捕获到的错误
pass
def A(s):
return 10/int(s)
def B(s):
return A(s)*2
def main():
B(0)
try:
B('0')
pass
except Exception as msg:
print(msg)
pass
pass
pass
main()
#不需要在每个可能出错的地方去捕获,只要在合适的层次
#去捕获错误就可以了,减少try-- except的冗余
#异常的抛出机制
#如果在运行是发生异常 解释器会查找相应的异常捕获类型
#如果在当前函数里面没有找到的话。它会将异常传递给上层的调用函数
#如果在最外层没有找到的话。解释器就会推出,程序down
try-except-else
try:
print(‘yes’)
#print (aa)
pass
except Exception as msg:
print(‘error’,msg)
else:
print(‘当try里面 没有出现异常 就会执行’)
pass
try-except-finally
try:
int (‘aaaa’)
pass
except Exception as msg:
print(msg)
pass
finally:
print(‘释放文件的资源、数据库连接是资源等等’)
print(‘不管有没有出错都执行的代码块’)
pass