Python 异常

try…except

我们可以用try…except来处理异常:

try:
    import NoThisModule
except ImportError as e:
   print e
   import os

如果模块不存在,那么Python解释器会报错,模块导入失败的错误一般是 ImportError 所以我们用 except 捕获 ImportError, 捕获到后,便会执行 except 中的语句。as 是一个关键字,和 import a as b 是一样的,打印出异常的详细解释。

注意:如果 except 后面跟的是其他异常类型,比如:OSError,但是捕获到的异常类型并不是 OSError 那么except 中的语句就不会执行。


我们可以尝试捕获多个异常:

try:
    import os
    print os.curdirs
except ImportError as e:
    print e
except AttributeError as e:
    print e

如果异常的类型是 ImportError 那么执行的是第一个 except
如果异常的类型是 AttributeError 那么执行的是第二个 except


except 捕获异常类型,若其中一个异常类型是基类,和一个继承自该基类的子类,比如:

try:
   ...
except ChildError:
   ...
except BaseError:
   ...

如果 BaseError 定义在 ChildError 之前,那么便会覆盖子类的异常。也就是,只执行 BaseErrorChildError 发生了也会被基类异常覆盖。

finally

try…except 之后还有一个 finally,不管异常有没有发生,最终都会执行其中的语句:

try:
    import NoModule
except ImportError as e:
    print e
finally:
    import os

try…except…else

异常捕获还可以配合else语法,finally是不管异常有没有发生都会最终执行,else是如果发生异常则不执行,没发生异常才执行。

try:
    import os
except:
    import sys
else:
    print "No EXCEPTIONS occured, so print this!"

自定义异常类型

错误类型其实就是一个继承自 Exception 的模块,比如一些内建的错误类型 OSError IOError … 它们都继承自 Exception,你也可以写一个自己的异常类:

class MyError(Exception):

    def __init__(self, explain):
        self.explain = explain

    def __str__(self):
        return "Error Type: %s" % self.explain

raise MyError("error ....")

#######################################
Traceback (most recent call last):
  File "/home/zhg/parser/err.py", line 11, in <module>
    raise MyError("error ....")
__main__.MyError: Error Type: error ....

raise 用来引发一个异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值