这篇文章主要介绍了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 +))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。