Python的异常处理
1、 异常常用形式
Python异常常用形式:
try:
正常的操作
......................
except:
发生异常,执行这块代码
......................
else:
如果没有异常执行这块代码
finally:
不管如何,最后一定要执行的代码
用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块
例:
try:
a = 10
b = 0
a/b
except Exception as e:
print(e)
print('error')
# raise e
else:
print('ok!')
finally:
print('end')
结果:
integer division or modulo by zero
error
end
如果b的数值为1,运行结果:
ok!
end
2、 Exception异常类
异常Warning
基类警告类别。
异常UserWarning
基类警告由用户代码生成。
异常DeprecationWarning
基类关于弃用功能的警告。
异常PendingDeprecationWarning
基类警告功能,这在未来将被弃用。
异常SyntaxWarning
基类警告可疑的语法。
异常RuntimeWarning
基类警告可疑的运行时行为。
异常FutureWarning
关于构造基类警告这将改变语义 的未来。
异常ImportWarning
基类模块进口警告可能的错误。
异常UnicodeWarning
基类警告与Unicode。
异常的层级结构
BaseException
+—— SystemExit
+—— KeyboardInterrupt
+—— GeneratorExit
+—— 异常
+—— 抛出StopIteration
+—— StandardError
| +—— BufferError
| +—— ArithmeticError
| | +—— FloatingPointError
| | +—— OverflowError
| | +—— ZeroDivisionError
| +—— AssertionError
| +—— AttributeError
| +—— EnvironmentError
| | +—— IOError
| | +—— OSError
| | +—— WindowsError (窗户)
| | +—— VMSError (虚拟机)
| +—— EOFError
| +—— ImportError
| +—— LookupError
| | +—— IndexError
| | +—— KeyError
| +—— MemoryError
| +—— NameError
| | +—— UnboundLocalError
| +—— ReferenceError
| +—— RuntimeError
| | +—— NotImplementedError
| +—— SyntaxError
| | +—— IndentationError
| | +—— TabError
| +—— SystemError
| +—— TypeError
| +—— ValueError
| +—— UnicodeError
| +—— UnicodeDecodeError
| +—— UnicodeEncodeError
| +—— UnicodeTranslateError
+—— 警告
+—— DeprecationWarning
+—— PendingDeprecationWarning
+—— RuntimeWarning
+—— SyntaxWarning
+—— UserWarning
+—— FutureWarning
+—— ImportWarning
+—— UnicodeWarning
+—— BytesWarning
3、 raise关键字
Raise用来触发异常
raise语法格式如下:
raise [Exception [, args [, traceback]]]
raise语句如果不带参数,就会把当前错误原样抛出
例:
try:
a = 10
b = 0
a/b
except Exception as e:
print(e)
print('error')
raise e
else:
print('ok!')
finally:
print('end')
结果:
integer division or modulo by zero
Traceback (most recent call last):
error
File "C:/Users/admin/PycharmProjects/test/except/yichang2.py", line 15, in
end
raise e
ZeroDivisionError: integer division or modulo by zero