python异常处理
2012-02-10 09:48
211 查看
与许多面向对象一样,python具有异常处理,通过使用try...except来处理异常,而通过raise来引发异常。
异常在 Python 中无处不在;实际上在标准 Python 库中的每个模块都使用了它们,并且 Python 自已会在许多不同的情况下引发它们。例如:
· 使用不存在的字典关键字 将引发 KeyError 异常。
· 搜索列表中不存在的值 将引发 ValueError 异常。
· 调用不存在的方法 将引发 AttributeError 异常。
· 引用不存在的变量 将引发 NameError 异常。
· 未强制转换就混用数据类型 将引发 TypeError 异常。
然而,一个异常不一定会引起程序的完全崩溃。当异常引发时,可以被 处理掉。有时候一个异常实际是因为代码中的 bug (比如使用一个不存在的变量),但是许多时候,一个异常是可以预计的。如果你打开一个文件,它可能不存在。如果你连接一个数据库,它可能不可连接或没有访问所需的正确的安全证书。如果知道一行代码可能会引发异常,你应该使用一个 try...except 块来处理异常。下面是一个异常处理的例子:
Python代码
1 try:
2 fsock = open("/notthere")
3 except IOError:
4 print "The file does not exist, exiting gracefully"
5 print "This line will always print"
除了处理实际的错误条件之外,对于异常还有许多其它的用处。在标准 Python 库中一个普通的用法就是试着导入一个模块,然后检查是否它能使用。导入一个并不存在的模块将引发一个 ImportError 异常。可以使用这种方法来定义多级别的功能,依靠在运行时哪个模块是有效的,或支持多种平台 (即平台特定代码被分离到不同的模块中)。例如:
Python代码
6 try:
7 import termios, TERMIOS
8 except ImportError:
9 try:
10 import msvcrt
11 except ImportError:
12 try:
13 from EasyDialogs import AskPassword
14 except ImportError:
15 getpass = default_getpass
16 else:
17 getpass = AskPassword
18 else:
19 getpass = win_getpass
20 else:
21 getpass = unix_getpass
异常在 Python 中无处不在;实际上在标准 Python 库中的每个模块都使用了它们,并且 Python 自已会在许多不同的情况下引发它们。例如:
· 使用不存在的字典关键字 将引发 KeyError 异常。
· 搜索列表中不存在的值 将引发 ValueError 异常。
· 调用不存在的方法 将引发 AttributeError 异常。
· 引用不存在的变量 将引发 NameError 异常。
· 未强制转换就混用数据类型 将引发 TypeError 异常。
然而,一个异常不一定会引起程序的完全崩溃。当异常引发时,可以被 处理掉。有时候一个异常实际是因为代码中的 bug (比如使用一个不存在的变量),但是许多时候,一个异常是可以预计的。如果你打开一个文件,它可能不存在。如果你连接一个数据库,它可能不可连接或没有访问所需的正确的安全证书。如果知道一行代码可能会引发异常,你应该使用一个 try...except 块来处理异常。下面是一个异常处理的例子:
Python代码
1 try:
2 fsock = open("/notthere")
3 except IOError:
4 print "The file does not exist, exiting gracefully"
5 print "This line will always print"
除了处理实际的错误条件之外,对于异常还有许多其它的用处。在标准 Python 库中一个普通的用法就是试着导入一个模块,然后检查是否它能使用。导入一个并不存在的模块将引发一个 ImportError 异常。可以使用这种方法来定义多级别的功能,依靠在运行时哪个模块是有效的,或支持多种平台 (即平台特定代码被分离到不同的模块中)。例如:
Python代码
6 try:
7 import termios, TERMIOS
8 except ImportError:
9 try:
10 import msvcrt
11 except ImportError:
12 try:
13 from EasyDialogs import AskPassword
14 except ImportError:
15 getpass = default_getpass
16 else:
17 getpass = AskPassword
18 else:
19 getpass = win_getpass
20 else:
21 getpass = unix_getpass
相关文章推荐
- Python中的异常处理 -- (转)
- python 异常处理
- python的错误类型和异常处理
- Python 异常处理
- Python爬虫入门——URLError异常处理
- python3.5处理异常与python2的不同
- Python宝典第七章:异常处理与程序调试
- python异常处理
- python中的五种异常处理机制介绍
- Python学习--12 异常处理、调试
- python异常处理练习1
- python异常处理 try.....except
- python 的with用途(清理资源和异常处理,同时代码精简)
- python异常处理方法
- python学习:异常处理、with用法以及utf8中文显示
- Python进阶08 异常处理
- Python爬虫入门五之URLError异常处理
- python异常处理实例教程(捕捉异常、错误)
- Python面向对象7:异常处理
- Python异常捕获与处理