例外、Pythonのエラー処理

抜粋:https://www.liaoxuefeng.com/wiki/1016959663602400/1017598873256736

 

 

エラー処理

高レベルの言語は、組み込みで使用するtry...except...finally...、エラーハンドリング、より効率的なエラー処理を

プログラマは、独自のエラー処理をせずにコードを記述します。

 

試します

してみてくださいプリント' 試し... ' 
    、R = 10 / INT(' 2 ' 、印刷' :結果' 、R)
 を除く電子などとValueError:
     印刷' :とValueError ' 、E)
 を除くeとZeroDivisionError:
     印刷' ZeroDivisionError:' 、e)の
 プリント' エラーなし!' 最後に印刷' 最後に... ' 印刷' END '

 

 

  • エラーがある場合、エラーの異なる種類に応じて異なるプロセスを使用したことを除いて、発生します。
    • int型( '')とValueErrorを開始します
    • 10/0トリガZeroDivisionError。
  • そうでない場合は、他の実行、の代わりにエラーはありません。
  • 最後に、最終的に我々は実行する必要があります

 

一般的なエラーの種類と継承

ルック文書は、内蔵の例外

https://docs.python.org/3/library/exceptions.html#exception-hierarchy

 

利益を試します

複数の層を越えてコール。バーにmain()関数の呼び出し()、バーの呼び出しfooが()、限り、エラーが発生した時のようにtryが処理されます。

デフのfoo(S):
     復帰 10 / INT(s)は

デフバー(S):
     リターンのfoo(S)* 2 デフメイン():
     試してみる
        バー(' 0 ' を除き、Eなど例外:
         印刷' エラー:' 、E)
     最後にプリント' 最後に... '

 

 

コールスタック

エラーがキャッチされていない場合、それは投げされていたであろう、最後に撮影したPythonインタプリタはエラーメッセージを表示し、プログラムを終了します。

エラーメッセージがありますTraceback (most recent call last)...。它是一个错误路径。可以在最后查看错误原因,定位错误位置。

 

ロギングモジュール

あなたはログにエラー情報を記録することができます。そして、プログラムは継続してみましょう。

err_logging.py 

インポートログ

デフのfoo(S):
     復帰 10 / INT(s)は

デフバー(S):
     リターンのfoo(S)* 2 デフメイン():
     試してみる
        バー(' 0 ' を除き、例外eと:
        logging.exception(e)の 
メイン()印刷' END '



 

 

エラーをスロー

エラーは、間違いをキャプチャすることは、クラスのインスタンスをキャプチャするクラスです。だから、エラーが意図的に作成された状況に応じたエラーインスタンスです。

組み込み関数のエラーの様々な種類があります。また、独自の関数を書くことができ、その後、エラーがスローされます。

err_raise.py 
クラスFooError(とValueError):
     渡す

デフFOO(S):
    N = INT(S)
     場合 == N 0:
         昇給 FooError(' 無効な値:%S 'S)
     リターン 10 / N 

のfoo(' 0 "

 

  • 書き込みエラークラスFooError。
  • 昇給の声明、生成されたインスタンスFooError。

組み込み関数を使用してみてください。このようなとValueError、TypeError例外として

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/chentianwei/p/11871228.html