try…except… else…finally…
1)普通的异常处理:
import timetry:# 如果你觉得代码可能出现问题, 那么放在try语句中, 只执行一次; print(s)#可能NameErrorexcept NameError as e:# 对于异常进行一个重命名;记录了异常的详细信息; # 可能执行一次, 也可能不执行; print('名称错误') with open('except.log','w') as f: #把异常内容写入except.log文件 f.write('名称错误')finally:# 无论是否出现异常, 肯定会执行一次 print('处理结束')输出:
名称错误处理结束并且会得到一个except.log文件
当没有错误时,except不执行
import timetry: # print(s) print('hello') # 没有错误,except不执行except NameError as e: print('名称错误') with open('except.log','w') as f: f.write('名称错误')finally: print('处理结束')输出:
hello处理结束可以调整except.log文件记录格式显示时间错误内容等:
import timetry: # print(s) print('hello') # 没有错误,except不执行except NameError as e: print('名称错误') with open('except.log','w') as f: f.write(time.ctime()+' ') #打印时间 f.write(str(e))# 打印错误详情finally: print('处理结束')try语句中一旦出现问题, 后面的语句(try里面的)不执行。
import timetry: # 如果你觉得代码可能出现问题, 那么放在try语句中, 只执行一次; print('hello') with open('/etc/aa') as f: # try语句中一旦出现问题, 后面的语句(try里面的)不执行 print(f.read()[:5]) print("文件读取结束") li = [1, 2, 3, 4] print(li[5]) print(s) print("hello")except (NameError, IndexError) as e: # 对于异常进行一个重命名;记录了异常的详细信息; # 可能执行一次, 也可能不执行; # print("名称错误") with open("except.log", 'a+') as f: f.write(time.ctime() + ' ' + str(e) + 'n')finally: # 无论是否出现异常, 肯定会执行一次, print("处理结束")并且except.log文件什么都不记录。
2)python内置异常处理
含有父子级关系
可以ctrl进入IndexError,查看继承关系