import time try: 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("最后的finally") # 这是test.txt文件中读取到信息
실행 결과:
간단한 요약:
함수 A----> function B----> function 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 = atleast def main(): try: s = input('请输入 --> ') if len(s) < 3: # raise引发一个你定义的异常 raise ShortInputException(len(s), 3) #自定义异常长度为3。 except ShortInputException as result:#x这个变量被绑定到了错误的实例 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: #重新抛出这个异常,此时就不会被这个异常处理给捕获到,从而触发默认的异常处理 raise a = Test(True) a.calc(11,0) print("----------------------华丽的分割线----------------") a.switch = False a.calc(11,0)
运行结果:
이 글은 Python의 기본을 바탕으로 작업 중 다양한 예외가 발생할 때 어떤 처리 방법을 채택해야 하는지 자세히 설명하고, 다양한 문제에 대한 효과적인 솔루션을 제공합니다. 예외. 소규모 프로젝트의 실제 운영과 운영 결과 표시를 통해 문제를 더 잘 해결할 수 있습니다. 파이썬을 더 잘 배우는 데 도움이 되기를 바랍니다.
위 내용은 Python 예외 전달 및 사용자 지정 예외를 이해하는 데 도움이 되는 문서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!