Python中的Exceptions是所有异常的基类,内置的异常类都放在了exceptions模块中,通过dir()函数可以看到这些内置的类
通过raise 语句触发异常,如
>>>raise Exception
>>>importexceptions
>>>dir(exceptions)
['ArithmeticError','AssertionError','AttributeError','BaseException','BufferError','BytesWarning','DePRecationWarning','EOFError','EnvironmentError','Exception','FloatingPointError','FutureWarning','GeneratorExit','IOError','ImportError','ImportWarning','IndentationError','IndexError','KeyError','KeyboardInterrupt','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','__doc__','__name__','__package__']
当代码遇到错误的时候,会逐层向上传播,如果没有捕捉异常的机制,错误会传递到全局变量的位置,导致程序报错终止.
在python中可以通过 try/except来捕捉异常,except 可以跟上内置的异常类,或者自定义的异常类
1importexceptions2try:3printa4exceptNameError:5print'名字未定义'
View Code
也可以捕捉多个异常,用元组把它们列出来就可以了,另外如果要访问异常对象本身,except语句在加上一个参数就可以了如
importexceptionstry:printaexceptNameError,e:printe
View Code
注意:在python 3.0中 except语句会写成 execpt NameError as e :
其他语句:
else语句: 只有在没有异常的情况下,else才会执行.
finally语句: 在异常处理语句中,都会执行.