python异常处理方法,python异常处理有何作用
要理解try except异常处理的用法,简单来说就是位于try块中的程序在执行过程中发生异常时,会捕捉到异常,并找到对应的except块来处理异常。那么这里就有一个问题。它是如何找到对应的except块的?
我们知道,一个try块也可以对应多个except块,一个except块可以同时处理多个异常。如果我们想用一个except块来处理所有的异常,我们可以这样写:
try: #. #除外.
在这种情况下,对于try块中可能出现的任何异常,Python解释器都会将其交给唯一的except块,因为它的参数是Exception,这意味着它可以接收任何种类的异常。
注意except,可以接收任何异常,后面可以跟Exception,也可以不带任何参数,但是意思是一样的。
下面是对异常的详细介绍。要知道,为了表示程序中可能出现的各种异常,Python提供了大量的异常类,而且这些异常类有着严格的继承关系。图1显示了Python常见异常类之间的继承关系。
从图1中可以看出,BaseException是Python中所有异常类的基类,但对我们来说,最重要的是Exception类,因为程序中可能出现的各种异常都是从Exception继承而来的。
因此,如果用户希望实现自定义异常,他们应该继承exception类,而不是BaseException。关于如何定制一个异常类,请阅读《Python自定义异常类》部分。
当try块捕获一个异常对象时,Python解释器会依次将异常类型与每个except块指定的异常类进行比较。如果被捕获的异常类与except块后的异常类相同,或者是异常类的子类,Python解释器会调用这个except块来处理异常;相反,Python解释器将继续比较,直到完成最后一个except。如果比较不成功,证明异常无法处理。
图2展示了当try块中的程序出现异常时,从捕获异常到处理异常的整个过程。
下面是几个简单的异常捕获示例:
尝试:
A=int(input (input a:))
B=int(input (input b:))
打印(黑白)
除了ValueError:
Print(数值错误:程序只能接收整数参数)
算术错误:除外
打印(“算术错误”)
除了例外:
Print(未知异常)在这个程序中,根据用户输入的A和B值的不同,可能会引起ValueError和ArithmeticError异常:
如果用户输入的A或B是数字以外的其他字符,会发生ValueError异常,try块会捕捉这种类型的异常,Python解释器会调用第一个except块来处理异常;
如果用户输入的A和B都是数字,但是B的值是0,因为除法时除数不能为0,就会发生ArithmeticError异常,try块会捕捉到异常,而Python解释器会调用第二个except块来处理异常;
当然,程序在运行的时候,可能会因为其他因素出现异常,try块可以被捕获,Python会调用last except块来处理。
当一个try块配备了多个except块时,这些except块应该遵循这样一个排序规则,即处理所有异常(参数是except,或者什么都不能写)的except块应该放在所有except块的后面,所有父类异常的except块应该放在子类异常的except块的后面。
推荐教程:以上《Python教程》是Python异常处理机制的详细内容。请多关注热门IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。