Pythonオブジェクト向け異常

5117 ワード

異常な概念
  • プログラムが実行されると、python解釈器がエラーに遭遇すると、プログラムの実行が停止し、エラー情報が表示されます.これは異常です.
  • プログラムはエラーに遭遇して実行を停止し、エラー情報を提示し、この動作は私たちが放出(raise)異常と呼ぶ.

  • 異常は私たちがコード規範に従っていない可能性があります.しかし、コード仕様に従って作成しても、エラーが発生する可能性があります.例えば、ユーザーに数字を入力し、intを翻訳するように要求しますが、ユーザーが非数字を入力すると、エラーが発生します.
    プログラム開発では、すべての状況を処理することが難しく、異常捕獲によって突発事件に対して集中的な処理を行い、プログラムの安定性と丈夫性を保証することができる.
    例外の取得
    単純な例外キャプチャ
    プログラム開発では、一部のコードの実行が正しく実行されるかどうかを判断できない場合、try(試行)を増やして異常をキャプチャすることができます.
    例外を取得する最も簡単な構文形式:
    try:
               
    except:
               

    try試行、下に試行コードを書き、正しく実行できるかどうか分からないコードを書く.Exceptがそうでなければ、以下に試行に失敗したコードを記述します.
    単純例外取得の例
    try:
        #               
        num = int(input("       :"))
    except:
        #           
        print("            ")
    
    print("-"*50)
    
    #        :1
    # --------------------------------------------------
    
    #        :a
    #             
    # --------------------------------------------------

    エラー・タイプの取得
    プログラムが実行されると、異なるタイプの例外に遭遇し、異なるタイプの例外に対して異なる応答が必要になる可能性があります.この場合、エラータイプを使用してキャプチャする必要があります.
    エラー・タイプ取得構文は次のとおりです.
    try:
        #        
        pass
    except     1:
        #       1,       
        pass
    except (    2,    3):
        #       2 3,       
        pass
    #           
    except Exception as e:
        print("    :", e)

    python解釈器が異常を投げ出すと、最後の行のエラー情報の最初の単語はエラータイプであり、例えば以下、エラー情報はZeroDivisionErrorである.
    ZeroDivisionError: division by zero

    エラー・タイプ取得コードのデモ
    while 1:
        try:
            num = int(input("       :"))
    
            result = 8/num
            print("8          :", result)
            break
    
        except ZeroDivisionError:
            print("       0,    ,     ")
            continue
    
        except ValueError:
            print("            ,     ")
            continue
    
        except Exception as e:
            print("   :%s ,     ", e)
            continue
    
    #        :0
    #        0,    ,     
    #        :a
    #             ,     
    #        :2
    # 8          : 4.0

    不明な例外の取得
    開発時に、発生する可能性のあるすべてのエラーを予断するのは難しい.プログラムにエラーが発生してもpython解釈器から例外が放出されて終了しないようにするには、次の文を追加します.
    except Exception as e:
        print("   :%s ,     ", e)

    不明な例外の取得
    while 1:
        try:
            num = int(input("       :"))
    
            result = 8/num
            print("8          :", result)
            break
    
        except ValueError:
            print("            ,     ")
            continue
    
        except Exception as e:
            print("   :%s ,     ", e)
            continue
    
    #        :a
    #             ,     
    #        :0
    #    :division by zero ,     
    #        :1
    # 8          : 8.0

    例外取得の完全な構文
    実際の開発では,複雑な異常を処理できるように,完全な異常構文は以下の通りである.
    try:
        #        
        pass
    except     1:
        #       1,       
        pass
    except (    2,    3):
        #       2 3,       
        pass
    except Exception as e:
        print("    :", e)
    else:
        #            
        pass
    finally:
        #                
        pass
  • elseは、異常がない場合にのみ実行されるコードである.
  • finallyは、異常が発生するかどうかにかかわらず実行されるコードである.

  • 例外取得完全構文の例
    while 1:
        try:
            num = int(input("       :"))
    
            result = 8/num
            print("8          :", result)
    
        except ZeroDivisionError:
            print("       0,    ,     ")
            continue
    
        except ValueError:
            print("            ,     ")
            continue
    
        except Exception as e:
            print("   :%s ,     " % e)
            continue
    
        else:
            print("      ")
            break
        finally:
            print("               ")

    異常な伝達
  • 異常の伝達:コード/メソッドが異常を実行すると、関数/メソッドの呼び出し側に異常が伝達される.
  • メインプログラムに渡された場合、まだ異常を処理していない場合、プログラムは終了します.

  • ヒント:
  • 開発では、メインプログラムに異常処理を追加することができる.
  • でメインプログラムで他の関数を呼び出し、異常が発生するとメインプログラムの異常キャプチャに渡される.
  • これにより、関数/方法において、大量の異常捕獲を増加させる必要がなく、コードの清潔性を保証することができる.

  • 例外転送処理例
    def demo1():
        num = int(input("       :"))
        return num
    
    
    def demo2():
        return demo1()
    
    
    #         ,        
    try:
        result = demo2()
        print(result)
    except ValueError:
        print("            ")
    except Exception as e:
        print("   :%s " % e)

    放出(raise)異常
    例外適用シーンを放出
    プログラムでは、コードエラー解釈器が例外を放出するほか、アプリケーションの特定のビジネスニーズに応じて積極的に例外を放出することもできます.例えば、登録時に、ユーザーが入力したパスワードが8ビット未満の場合、異常注意を投げ出す長さが足りない.
    注意:現在の関数は、ユーザーにパスワードを入力するように注意するだけで、パスワードの長さが足りない場合は、他の追加の関数が異常処理する必要があります.このため、異常を放出する、他の処理が必要な関数によって異常をキャプチャすることができる.
    異常を投げ出す
    pythonにはException例外クラスがあります.開発時、特定のビジネスニーズを満たす場合、例外を放出したい場合は、次のことができます.
    1.    Exception    
    2.  raise         

    例外をプロアクティブに放出する例
    def input_pwd():
        pwd = input("     :")
    
        if len(pwd) >= 8:
            return pwd
        #       ,               
        short_pwd = Exception("      8 ")
        #       
        raise short_pwd
    
    
    try:
        password = input_pwd()
        print(password)
    
    except Exception as e:
        print("   :", e)

    転載先:https://www.cnblogs.com/yifchan/p/python-1-19.html