Python基础-异常
try: #code except SomeError1 as e: #code print(e) except SomeError2 as e: #code print(e) else: #code 没出错的时候执行 finally: #code 不管有没有错都会执行
也可以这样写:
try: #code except (SomeError1,SomeError2) as e: #code
所以异常类都继承自Exception,一般放在最后来抓取未知错误
常见错误类型:
-
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
-
IOError 输入/输出异常;基本上是无法打开文件(python3.x中改为FileNotFindException)
-
ImportError 无法引入模块或包;基本上是路径问题或名称错误
-
IndentationError 语法错误(的子类) ;代码没有正确对齐
-
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
-
KeyError 试图访问字典里不存在的键
-
KeyboardInterrupt Ctrl+C被按下
-
NameError 使用一个还未被赋予对象的变量
-
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
-
TypeError 传入对象类型与要求的不符合
-
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
-
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
其他异常:
-
ArithmeticError
-
AssertionError
-
AttributeError
-
BaseException
-
BufferError
-
BytesWarning
-
DeprecationWarning
-
EnvironmentError
-
EOFError
-
Exception
-
FloatingPointError
-
FutureWarning
-
GeneratorExit
-
ImportError
-
ImportWarning
-
IndentationError
-
IndexError
-
IOError
-
KeyboardInterrupt
-
KeyError
-
LookupError
-
MemoryError
-
NameError
-
NotImplementedError
-
OSError
-
OverflowError
-
PendingDeprecationWarning
-
ReferenceError
-
RuntimeError
-
RuntimeWarning
-
StandardError
-
StopIteration
-
SyntaxError
-
SyntaxWarning
-
SystemError
-
SystemExit
-
TabError
-
TypeError
-
UnboundLocalError
-
UnicodeDecodeError
-
UnicodeEncodeError
-
UnicodeError
-
UnicodeTranslateError
-
UnicodeWarning
-
UserWarning
-
ValueError
-
Warning
-
ZeroDivisionError
自定义异常:
class MyException(Exception): def __init__(self,msg): self.message = msg def __str__(self): return self.message 抛出异常: 使用关键字raise抛出异常 try: if xxx: raise MyException("xxx") except MyException as e: print(e)