大家好,我是Go进阶者。今天给大家分享一些Python基础知识(异常传递和自定义异常)。上一篇文章提到:一篇文章带你了解Python异常的介绍和案例分析。一起来看看本文关于异常的其他知识吧~1.异常传递1.try嵌套中的importtimetry:f=open('test.txt')try:whileTrue:content=f.readline()iflen(content)==0:breaktime.sleep(2)finally:f.close()print('关闭文件')except:print("没有那个文件")finally:print("finally")#这是结果test.txt文件中读取的信息:2.函数嵌套调用中的deftest1():print("----test1-1----")print(num)print("----test1-2----"deftest2():print("----test2-1----")test1()print("----test2-2----")deftest3():try:print("----test3-1----")test1()print("----test3-2----")exceptExceptionasresult:print("异常被捕获,信息为:%s"%result)print("----test3-2----")test3()print("------华丽的分割线-----")test2()运行结果:小总结:如果try是嵌套的,如果内层的try没有捕获到异常,那么外层的try会接收到异常然后处理,如果外层的try还是不行的话拍下来,然后传下去。如果在函数中产生了异常,比如函数A---->函数B---->函数C,而异常是在函数C中产生的,那么如果在函数C中没有处理异常,那么异常会传递给函数B,如果函数B有异常处理,则按照函数B的处理方式执行;如果函数B没有异常处理,那么异常会继续传递,以此类推。..如果所有函数都没有处理,那么此时会默认处理异常。二、抛出自定义异常您可以使用raise语句来抛出异常。异常/错误对象必须有一个名称,并且它们应该是错误或异常类的子类。下面是引发异常的示例:):try:s=input('Pleaseenter-->')iflen(s)<3:#raise触发一个你定义的异常raiseShortInputException(len(s),3)#自定义异常的长度为3。exceptShortInputExceptionasresult:#xthisvariableisboundtothewronginstanceprint('ShortInputException:Thelengthoftheinputis%d,thelengthshouldatleast%d'%(result.length,result.atleast))else:print('NoexceptionOccurs.')main()运行结果:上面程序中,#super().init()代码说明:这行代码可调用可不调用,推荐调用。因为__init__方法经常用来初始化创建的对象,如果在子类中重写了父类的__init__方法,就意味着父类中很多初始化工作还没有完成,所以会不稳定程序的功能是有保证的,所以在以后的开发中,如果重写了父类的__init__方法,最好先调用父类的这个方法,再添加自己的函数。3.异常处理抛出异常capture打开,异常已经被捕获,信息如下:")print(result)else:#重新抛出异常,此时不会被异常处理捕获,从而触发默认的异常处理raisea=Test(True)a.calc(11,0)print("--------------------华丽的分割线------------------")a.switch=Falsea.calc(11,0)运行结果:4.小结本文以Python基础为基础,详细讲解遇到各种异常时应该采取什么样的处理方式在运行过程中。各种异常提供了有效的解决方案。通过每个小项目的实际运行和运行结果的展示,可以更好的解决问题。希望能帮助大家更好的学习Python。