python异常处理

 与许多面向对象一样,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  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值