python 可以通过try语句来检测异常,任何出现在try语句里面的异常
都能被检测到
一、try except
1.1语句方式:
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
1.2例子:
try: f = open('E:\\tedst.txt') print(f) f.close() except OSError: print('文件不存在')#结果:当文件不存在时不报错了,而是提示文件不存在day
1.2打印具体的出错信息:
try: f = open('E:\\tedst.txt') print(f) f.close() except OSError as err: print('文件不存在,错误的原因是:'+str(err))#文件不存在,错误的原因是:[Errno 2] No such file or directory: 'E:\\tedst.txt'yige
1.3一个try语句可以接多个except:
try: sum = 1+'1' f = open('E:\\tedst.txt') print(f) f.close() except OSError as err: print('文件不存在,错误的原因是:'+str(err))#这次不会打印文件不存在的错误信息,因为优先报错了类型出错的异常 except TypeError as err: print('类型出错啦,错误的原因是:'+str(err))#类型出错啦,错误的原因是:unsupported operand type(s) for +: 'int' and 'str'如果
1.4如果不知道发生的具体异常类型,则可以如下操作
try: sum = 1+'1' f = open('E:\\tedst.txt') print(f) f.close() except: print('出错啦')#不建议这样做,会隐藏很多程序员不知道的错误
1.5 try 语句中一旦出现异常,那么下面的语句不会再执行
1.6 同时对多个异常进行统一的处理
try: sum = 1+'1' f = open('E:\\tedst.txt') print(f) f.close() except (OSError,TypeError): print('出错啦')
二、try except finally 语句
如果说异常发生在成功打开文件之后---跳入进入except--则f.close()没有执行
try: f = open('E:\\tedst.txt') sum = 1 + '1' print(f) except (OSError,TypeError): print('出错啦') finally: f.close()
三、raise语句:自己引发异常
raise #结果:RuntimeError: No active exception to reraise
raise ZeroDivisionError#结果:ZeroDivisionError
raise ZeroDivisionError('除数为零的异常')#结果:ZeroDivisionError: 除数为零的异常