Python学習ノート(18):異常処理


目次
  • 異常概念
  • 2異常の書き方
  • 3特定異常をキャプチャ
  • 4複数の指定例外
  • をキャプチャする.
  • 4印刷異常情報
  • 5すべての例外をキャプチャ
  • else文
  • 6 finally文
  • 7カスタム例外

  • 1異常概念
    1つのエラーが検出されると、解釈器は法を無視して実行し続け、逆例えば、存在しないデバイスをr方式で開く.
    f=open('test.txt','r')
    
    Traceback (most recent call last):
      File "E:01    .py", line 4, in <module>
        f=open('test.txt','r')
    FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
    

    2異常な書き方
    例外の構文は、exceptがすべての例外をキャプチャし、例外が発生するとexcept内の文が実行されることに相当します.
    try:
     	         
    except:
     	           
    

    例えば、rアクセスモードでtxtファイルを読み出して異常が発生した場合、異常処理によりwアクセスモードでtxtファイルを読み出すように変更することができる.
    try:
        f=open('test.txt','r')
    #     ,  except    
    except:
        f=open('test.txt','w')
    

    3指定された例外の取得
    文法は以下の通りです.
    try:
     	         
    except     :
     	               
    

    名前のない変数numを印刷してNameError例外を生成し、受信することができます.
    try:
        print(num)
    except NameError:
        print("  ")
    except:
        print("    ")
    
      
    

    4指定された複数の例外の取得
    try:
        print(1/0)
    except (NameError,ZeroDivisionError) :
        print("   ")
    except:
        print("      ")
    
       
    

    4異常情報の印刷
    複数の異常をキャプチャし、どの異常が発生したのか分からない場合があります.この場合、異常情報を印刷することで判断できます.
    try:
        print(num)
    #      
    except (NameError,ZeroDivisionError) as result:
        print(result)
    except:
        print("      ")
    
    name 'num' is not defined
    

    5すべての例外をキャプチャ
    すべてのプログラム例外クラスの親クラスExceptionですべての例外をキャプチャできます.
    try:
        print(1/0)
    except Exception as result:
        print(result)
        print("       ")
    
    division by zero
           
    

    5 else文
    異常が発生しない場合、プログラムはelseの文を実行します.異常なキャプチャ(およびexcept文が存在する)が行われている場合にのみ、else文を書くとエラーが発生しません.
    try:
        print("hello")
    #    
    except Exception as result:
        print(result)
    #              else
    #         
    else:
        print("      ")
    
    hello
          
    

    6 finally文
    finallyは、例外がないかどうかを問わず実行するコードを表します.たとえば、デバイスを閉じることです.
    try:
        f=open('test.txt','r')
    except Exception as result:
        print(result)
        f=open('test.txt','w')
    finally:
        f.close()
    

    7カスタム例外
    例外をカスタマイズする方法を一例で体験できます.プログラムの開始時にユーザに一連のパスワードを入力するように要求し,パスワードの長さが3未満であればカスタムの異常を投げ出す.カスタム例外を実装する必要があります_init__メソッドと_str__メソッドは、異常情報の初期化と印刷にそれぞれ使用されます.
    class ShortNameException(Exception):
        def __init__(self,length,minLen):
            self.length=length
            self.minLen=minLen
        def __str__(self):
            return f'       {
           self.length},    {
           self.minLen}'
    
    try:
        code=input("       
    "
    ) if(len(code)<3): raise ShortNameException(len(code),3) except ShortNameException as result: print(result) finally: print(" ")
           
    23
           2,    3