最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python中自定义异常的使用举例

    正文概述    2020-02-11   307

    通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

    Python中自定义异常的使用举例

    以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

    在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

    class Networkerror(RuntimeError):
      def __init__(self, arg):
       self.args = arg

    在你定义以上类后,你可以触发该异常,如下所示:

    try:
      raise Networkerror("Bad hostname")
    except Networkerror,e:
      print e.args

    在下面这个例子中,默认的__init__()异常已被我们重写。

    >>> class MyError(Exception):
    ...   def __init__(self, value):
    ...     self.value = value
    ...   def __str__(self):
    ...     return repr(self.value)
    ...
    >>> try:
    ...   raise MyError(2*2)
    ... except MyError as e:
    ...   print 'My exception occurred, value:', e.value
    ...
    My exception occurred, value: 4
    >>> raise MyError, 'oops!'
    Traceback (most recent call last):
     File "<stdin>", line 1, in ?
    __main__.MyError: 'oops!'

    常见的做法是创建一个由该模块定义的异常基类和子类,创建特定的异常类不同的错误条件。

    我们通常定义的异常类,会让它比较简单,允许提取异常处理程序的错误信息,当创建一个异常模块的时候,常见的做法是创建一个由该模块定义的异常基类和子类,根据不同的错误条件,创建特定的异常类:

    class Error(Exception):
      """Base class for exceptions in this module."""
      pass
     
    class InputError(Error):
      """Exception raised for errors in the input.
     
      Attributes:
        expression -- input expression in which the error occurred
        message -- explanation of the error
      """
     
      def __init__(self, expression, message):
        self.expression = expression
        self.message = message
     
    class TransitionError(Error):
      """Raised when an operation attempts a state transition that's not
      allowed.
     
      Attributes:
        previous -- state at beginning of transition
        next -- attempted new state
        message -- explanation of why the specific transition is not allowed
      """
     
      def __init__(self, previous, next, message):
        self.previous = previous
        self.next = next
        self.message = message

    下载网 » Python中自定义异常的使用举例

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元