Python异常继承关系和自定义异常实现代码实例

  

这篇文章主要介绍了Python异常继承关系和自定义异常实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

主要介绍python中异常的继承关系,及如何自定义异常

  

1。异常的继承关系

        BaseException #所有异常的基类   + - - - SystemExit #解释器请求退出   + - - - KeyboardInterrupt用户中断执行(通常是输入^ C)   + - - - GeneratorExit #生成器(发电机)发生异常来通知退出   + #——异常常规异常的基类   + - - -抛出StopIteration #迭代器没有更多的值   + - - - StandardError #标准错误   | +——BufferError   | +——ArithmeticError   | | +——FloatingPointError   | | +——OverflowError   | | +——ZeroDivisionError   | +——AssertionError   | +——AttributeError   | +——EnvironmentError   | | +——IOError。那么   | | +——OSError   | | +——WindowsError (Windows)   | | +——VMSError (VMS)   | +——EOFError   | +——ImportError   | +——LookupError   | | +——IndexError   | | +——KeyError   | +——MemoryError   | +——NameError   | | +——UnboundLocalError   | +——ReferenceError   | +——RuntimeError   | | +——NotImplementedError   | +——SyntaxError   | | +——IndentationError   | | +——TabError   | +——SystemError   | +——TypeError   | +——ValueError   | +——UnicodeError   | +——UnicodeDecodeError   | +——UnicodeEncodeError   | +——UnicodeTranslateError   +,警告   + - - - DeprecationWarning   + - - - PendingDeprecationWarning   + - - - RuntimeWarning   + - - - SyntaxWarning   + - - - UserWarning   + - - - FutureWarnin   + - - - ImportWarnin   + - - - UnicodeWarnin   + - - - BytesWarning      

2。自定义异常

        #自定义异常需要继承例外   类MyException(异常):      def __init__(自我,* args):   自我。args=参数      if __name__==癬_main__”:   试一试:   提高MyException(“自定义异常”)   除了MyException e:   打印e      

3。异常捕获

        #示例   str1=' abc '   试一试:   int (str1)   除了IndexError e:   打印e   除了KeyError e:   打印e   除了ValueError e:   打印e   其他:   打印的尝试内正常处理的   最后:   打印“无论异常与否,都会执行我的      

4。主动触发异常

        #提高xxx   def test_zero (num):   试一试:   如果num==0:   提高ValueError(“参数错误”)   返回num   除了例外e:   打印e      test_zero (0)      

5。采用回溯模块查看异常

  

异常发生时,Python能“记”住引发的异常以及程序的当前状态。
  

  

Python维护着回溯(跟踪)对象,其中含有异常发生时与函数调用堆栈有关的信息。
  

  

异常可能在一系列嵌套较深的函数调用中引发。
  

  

程序调用每个函数时,Python会在“函数调用堆栈”的起始处插入函数名。一旦异常被引发,Python会搜索一个相应的异常处理程序。如果当前函数中没有异常处理程序,当前函数会终止执行,Python会搜索当前函数的调用函数,并以此类推,直到发现匹配的异常处理程序,或者Python抵达主程序为止。这一查找合适的异常处理程序的过程称为“堆栈辗转开解”(StackUnwinding)。
  

  

解释器一方面维护着与放置堆栈中的函数有关的信息,另一方面也维护着与已从堆栈中“辗转开解”的函数有关的信息。

        #示例   def div (num1, num2):   试一试:   结果=num1/num2   返回结果   除了例外e:   traceback.print_exc ()      打印div (1,0)            #执行结果   回溯(最近的电话):   没有一个   文件”- 20161005 F:/技术/python/python_project/演示/exceptiondemo/exceptiondemo。py”第17行,div   结果=num1/num2   ZeroDivisionError:整数除法或模零            #可以将异常信息写到文件中   traceback.print_exc(文件=开放(1. txt, w +))      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Python异常继承关系和自定义异常实现代码实例