Heim  >  Artikel  >  Backend-Entwicklung  >  Ein Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen

Ein Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen

Go语言进阶学习
Go语言进阶学习nach vorne
2023-07-25 15:40:52913Durchsuche

1. Ausnahmezustellung

1. Verschachtelter Aufruf

Laufendes Ergebnis:


Ein Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen

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文件中读取到信息

Laufergebnisse:


Kleine Zusammenfassung:

Ein Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen

Wenn der Versuch im Inneren die Ausnahme nicht abfängt, empfängt der Versuch außerhalb die Ausnahme und behandelt sie dann, wenn der äußere Versuchen Sie es immer noch nicht, dann geben Sie es weiter.

  1. Wenn eine Ausnahme in einer Funktion generiert wird, z. B. Funktion A----> Funktion B----> Wenn in C keine Ausnahme behandelt wird, wird die Ausnahme an Funktion B übergeben. Wenn Funktion B über eine Ausnahmebehandlung verfügt, wird sie gemäß der Verarbeitungsmethode von Funktion B ausgeführt. Wenn Funktion B keine Ausnahmebehandlung hat, wird die Ausnahme ausgeführt weitermachen, und so weiter. . . Wenn nicht alle Funktionen behandelt werden, wird zu diesem Zeitpunkt die Standardbehandlung der Ausnahme ausgeführt.

  2. 二、抛出自定义的异常

    你可以用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(&#39;ShortInputException: 输入的长度是 %d,长度至少应是 %d&#39;% (result.length, result.atleast))
        else:
            print(&#39;没有异常发生.&#39;)
    
    
    main()

    运行结果:

    Ein Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen

    Ein Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen以上程序中,关于#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)

    运行结果:

    4. Zusammenfassung

    Ein Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen


    Plan. Durch den tatsächlichen Betrieb kleiner Projekte und die Anzeige der Betriebsergebnisse können Probleme besser gelöst werden. Ich hoffe, es kann Ihnen helfen, Python besser zu lernen.

Das obige ist der detaillierte Inhalt vonEin Artikel, der Ihnen hilft, die Bereitstellung von Python-Ausnahmen und benutzerdefinierte Ausnahmen zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:Go语言进阶学习. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen