异常处理的作用
错误可预知
此时应该用if判断去预防异常
AGE = 10
age = input('>>: ').strip()
if age.isdigit():
age = int(age)
if age > AGE:
print('太大了')
错误不可预知
语法
异常在 try 块里抛。
try有异常,执行 except ; try 无异常,才会执行 else
finally:无论 try 块是否抛异常,永远执行的代码,通常用来执行关闭文件,断开服务器连接等功能。
try 可与 else或 finally两者中的至少一个一起使用
万能异常
Exception,被监测的代码块抛出的异常有多种可能性
并且我们针对所有的异常类型都只用一种处理逻辑就可以了,那就使用Exception
try:
print('===>1')
# name
print('===>2')
l = [1, 2, 3]
l[100]
print('===>3')
d = {}
d['name']
print('===>4')
except Exception as e:
print('异常发生啦:', e)
print('====>afer code')
多分支
使用场景:可以知道部分具体的异常类型
try…except
try:
print('===>1')
# name
print('===>2')
l = [1, 2, 3]
# l[100]
print('===>3')
d = {}
d['name']
print('===>4')
except NameError as e:
print('--->', e)
except IndexError as e:
print('--->', e)
except KeyError as e:
print('--->', e)
except Exception as e:
print('统一的处理方法')
print('====>afer code')
try…except…else
try:
print('===>1')
# name
print('===>2')
l=[1,2,3]
# l[100]
print('===>3')
d={}
d['name']
print('===>4')
except NameError as e:
print('--->',e)
except IndexError as e:
print('--->',e)
except KeyError as e:
print('--->',e)
except Exception as e:
print('统一的处理方法')
else:
print('在被检测的代码块没有发生异常时执行')
print('====>afer code')
try…except…finally
try:
print('===>1')
# name
print('===>2')
l=[1,2,3]
# l[100]
print('===>3')
d={}
d['name']
print('===>4')
except NameError as e:
print('--->',e)
except IndexError as e:
print('--->',e)
except KeyError as e:
print('--->',e)
except Exception as e:
print('统一的处理方法')
finally:
print('不管被检测的代码块有无发生异常都会执行')
print('====>afer code')
try…except…else…finally
try:
print('===>1')
# name
print('===>2')
l=[1,2,3]
# l[100]
print('===>3')
d={}
d['name']
print('===>4')
except NameError as e:
print('--->',e)
except IndexError as e:
print('--->',e)
except KeyError as e:
print('--->',e)
except Exception as e:
print('统一的处理方法')
else:
print('在被检测的代码块没有发生异常时执行')
finally:
print('不管被检测的代码块有无发生异常都会执行')
print('====>afer code')