异常处理的作用
错误可预知
此时应该用if判断去预防异常
AGE = 10age = input('>>: ').strip()if age.isdigit():age = int(age)if age > AGE:print('太大了')
错误不可预知
语法
异常在 try 块里抛。try有异常,执行 except ; try 无异常,才会执行 elsefinally:无论 try 块是否抛异常,永远执行的代码,通常用来执行关闭文件,断开服务器连接等功能。try 可与 else或 finally两者中的至少一个一起使用
万能异常
Exception,被监测的代码块抛出的异常有多种可能性
并且我们针对所有的异常类型都只用一种处理逻辑就可以了,那就使用Exception
try:print('===>1')# nameprint('===>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')# nameprint('===>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')# nameprint('===>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')# nameprint('===>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')# nameprint('===>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')
