Python内置异常类
Python自身带了许多已经定义好了的异常类,内置的异常阶层如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
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
|
BaseException
所有内置异常的基类(父类)。用户定义的类不能直接继承BaseException,可以继承BaseException的子类Exception。如果对此类的实例调用str(),则返回该实例的参数,或者在没有参数时返回空字符串。
args
为异常构造函数提供参数的元组。一些内置的异常(如OSError)需要一定数量的参数,并为这个元组的元素赋予特殊的含义,而其他的通常只需要一个给出错误消息的字符串。
with_traceback(tb)
此方法将tb设置为异常的新回溯,并返回异常对象。它通常用于异常处理代码,如:
1
2
3
4
5
|
try:
...
except SomeException:
tb = sys.exc_info()[2]
raise OtherException(...).with_traceback(tb)
|
Exception
所有内置的、非系统退出的异常都是从此类派生的。所有用户定义的异常也应直接或间接地从此类派生。
自定义异常类
除了python提供的内置异常类意外,我们还可以自己定义异常类。自定义异常类应该直接或间接地从 Exception 类派生。
定义格式
1
2
|
class 异常名(Exception):
pass
|
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class MyError(Exception):
def __init__(self,ErrorInfo):
#初始化父类
super().__init__(self)
self.errorinfo=ErrorInfo
def __str__(self):
return self.errorinfo
try:
raise MyError('我的异常')
except MyError as e:
print(e) #输出 我的异常
|
转载请注明本网址。