zoukankan      html  css  js  c++  java
  • Python 异常处理

    一、             异常概念

    Python在执行代码之前,会进行语法检查,如果语法出错了,会抛出语法错误(SyntaxError)。

    Python程序运行期间检测到的错误被称为异常。

    内置异常:

    BaseException:所有异常的基类

    错误类异常(发生之后,如果不捕获,将会导致程序终止):

      SystemExit:解释器请求退出

      KeyboardInterrupt:用户中断执行(通常是输入^C)

      Exception:常规错误的基类

      StopIteration:迭代器没有更多的值

      ZeroDivisionError:除(或取模)零 (所有数据类型)

      AssertionError:断言语句失败

      AttributeError:对象没有这个属性

      NotImplementedError:尚未实现的方法

      SyntaxError:Python 语法错误

    警告类异常(打印出警告信息,使用warnings模块调用,而不是使用raise抛出,不会中断程序的正常执行):

    Warning:警告的基类

    DeprecationWarning:关于被弃用的特征的警告 

       import warnings

     

      warnings.warn("新的版本将会弃用", DeprecationWarning)

    UserWarning:用户代码生成的警告

      import warnings

     

      warnings.warn("用户的忠告", UserWarning)

    二、             异常相关语句

                  assert(断言)

    assert  bool表达式, 字符串

    # 示例:

    assert  True, '断言失败'

                  raise语句(抛出异常)

    raise 异常对象实例

    # 示例:

    raise Exception('程序员抛出的异常')

    try语句(捕获异常)

      try-except

      try-except-except(任意多个except)

      try-except-else

      try-except-finally

      try-except-else-finally

    三、             捕获异常

      try语句

    四、             抛出异常

      raise语句

    五、             自定义异常

      继承自Exception类

      自定义的异常类可以为空

    class MyExcpet(Exception):

        pass

    也可以重写父类的__init__和__str__方法

    class MyExcpet(Exception):

        def __init__(self, value):

            self.value = value

        def __str__(self):

            return repr(self.value)

    class MyExcpet(Exception):
        """我自己的自定义异常"""
        def __init__(self, value):
            super(MyExcpet, self).__init__()
            self.value = value # 异常提示信息
    
        def __str__(self):
            return __class__.__name__ + ' ' + repr(self.value)
    
    try:
        raise MyExcpet('我的异常发生了')
    except MyExcpet:
        print('自己的异常,自己捕获')
    except Exception as ex:
        print('捕获很多类型的异常')
    except:
        print('所有未知的异常')

  • 相关阅读:
    Ajax学习笔记3种Ajax的实现
    分页学习笔记真分页和假分页实现
    学习笔记链表练习,模仿StringBuilder的山寨版StringBuilder
    学习笔记将Asp.Net网站发布到IIS的四种方法及注意事项
    3D 音频技术产品介绍(1):Iosono the future of spatial audio
    国际顶级语音信号增强工作组:IWAENC(International Workshop on Acoustic Echo and Noise Control)
    转:《欢聚时代(多玩YY)IPO招股书》(概要)
    苏州阔地网络科技有限公司专利分析
    CELT和SILK以及Opus的位分配方法
    ISAC 码流格式
  • 原文地址:https://www.cnblogs.com/sxqfuture/p/9378967.html
Copyright © 2011-2022 走看看