今天,我想和大家分享一些Python基础。 (异常传输和自定义异常),上一篇文章说:一篇文章会让你了解Python的异常介绍和案例分析。让我们来看看其他异常知识~1。异常传输1. 在try嵌套中
import timetry: f = open('test.txt') try: while True: content = f.readline() if len(content) == 0: break time.sleep(2) finally: f.close() print(‘关闭文件’)except : print(“没有此文件”)finally: print(“最后的finaly”)# 这是test.在txt文件中读取信息
运行结果:
2. 在函数嵌套调用中
def test1(): print(-test1-1- print(num) print(-test1-2- def test2(): print(-test2-1-) test1() print(-test2-2- def test3(): try: print(-test3-1-) test1() print(-test3-2- except Exception as result: print(”捕获异常,信息是:%s"%result) print(-test3-2- test3() print(-华丽的分割线-) test2()
运行结果:
小总结:
- 如果try嵌套,如果try在里面没有捕捉到这个异常,那么try在外面会接收到这个异常,然后处理它。如果try在外面还没有被捕获,那么它将被传输。
- 如果一个异常是在函数中产生的,例如函数A---->函数B---->函数C,异常是在函数C中产生的,如果函数C没有处理异常,则异常将传输到函数B,如果函数B有异常处理,则按函数B处理;如果函数B没有异常处理,则异常将继续传输,以此类推。。。。若所有函数未处理,则此时将进行异常默认处理。
你可以用raise语句来引起异常。异常/错误的对象必须有一个名称,它们应该是error或exception的子类
以下是导致异常的例子:
class ShortInputException(Exception): “自定义的异常类” def __init__(self, length, atleast): #super().__init__() self.length = length self.atleast = atleastdef main(): try: s = input('请输入 --> ') if len(s) < 3: # 你定义的异常导致raise raise ShortInputException(len(s), 3) #自定义异常长度为3。 except ShortInputException as result:#这个变量被绑定到错误的例子中 print('ShortInputException: 输入长度为 %d,至少长度应该是 %d'% (result.length, result.atleast)) else: print(没有异常发生.')main()
运行结果:
关于上述程序#super().init()代码说明:
这一行代码,可以调用也可以不调用,建议调用。
因为__init__________________________init__方法意味着父亲中的许多初始化工作没有完成,因此程序的稳定性不能得到保证。因此,在未来的发展中,如果父亲的重写__init__
方法,最好先调用父亲的方法,再添加自己的功能。
class Test(object): def __init__(self, switch): self.switch = switch #开关 def calc(self, a, b): try: return a/b except Exception as result: if self.switch: print(”捕获打开,已捕获异常,信息如下:") print(result) else: #重新抛出这种异常,此时不会被这种异常处理捕获,从而触发默认异常处理 raisea = Test(True)a.calc(11,0)print(-华丽的分割线-)a.switch = Falsea.calc(11,0)
运行结果:
四、总结基于Python的基础,本文详细阐述了在运行过程中遇到的各种异常应采取什么样的处理方法,并提供了各种异常有效的解决方案。通过小项目的实际操作和显示操作结果,可以更好地解决问题。我希望它能帮助你更好地学习Python。