python - 异常处理的语句
一、总结
一句话总结:
将可能出错的代码放到try里面,except可以指定类型捕获异常,可以将异常结果存在文档中。
import time try: # 如果你觉得代码可能出现问题, 那么放在try语句中, 只执行一次; print(s) #可能NameError except NameError as e: # 对于异常进行一个重命名;记录了异常的详细信息; # 可能执行一次, 也可能不执行; print('名称错误') with open('except.log','w') as f: #把异常内容写入except.log文件 f.write('名称错误') finally: # 无论是否出现异常, 肯定会执行一次 print('处理结束')
二、python - 异常处理的语句
转自或参考:python - 异常处理的语句
https://blog.csdn.net/weixin_43067754/article/details/85725569
try…except… else…finally…
1)普通的异常处理:
import time
try:
# 如果你觉得代码可能出现问题, 那么放在try语句中, 只执行一次;
print(s) #可能NameError
except NameError as e: # 对于异常进行一个重命名;记录了异常的详细信息;
# 可能执行一次, 也可能不执行;
print('名称错误')
with open('except.log','w') as f: #把异常内容写入except.log文件
f.write('名称错误')
finally:
# 无论是否出现异常, 肯定会执行一次
print('处理结束')
输出:
名称错误
处理结束
并且会得到一个except.log文件
当没有错误时,except不执行
import time
try:
# 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 time
try:
# 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 time
try:
# 如果你觉得代码可能出现问题, 那么放在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) + '
')
finally:
# 无论是否出现异常, 肯定会执行一次,
print("处理结束")
并且except.log文件什么都不记录。
2)python内置异常处理
含有父子级关系
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
+-- ImportError
| +-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- OSError
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
| +-- RecursionError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning
可以ctrl进入IndexError,查看继承关系