Pythonの例外処理の仕組みを詳しく解説

Guanhui
リリース: 2020-07-23 17:48:22
転載
2520 人が閲覧しました

Pythonの例外処理の仕組みを詳しく解説

try 例外処理の使用法を理解するには、簡単に言えば、try ブロック内のプログラムの実行中に例外が発生すると、その例外がキャプチャされ、対応する例外ブロックが生成されます。例外を処理するには、対応する例外ブロックをどのように見つけるかという質問があります。

try ブロックは複数の例外ブロックにも対応でき、Except ブロックは複数の例外を同時に処理できることがわかっています。すべての例外を処理するために、Exception ブロックを使用したい場合は、次のように記述できます:

try: #...例外 Exception: #...

この場合、 try ブロック 発生する可能性のある例外はすべて、Python インタプリタは処理のために唯一の例外ブロックに渡されます。これは、そのパラメータが Exception であるためです。これは、あらゆる種類の例外を受け取ることができることを意味します。

例外を受け取る例外の場合、その後に Exception を指定することも、パラメータを指定せずに指定することもできますが、意味は同じであることに注意してください。

ここでは、Exception について詳しく紹介します。プログラム内で発生する可能性のあるさまざまな例外を表すために、Python には多数の例外クラスが用意されており、これらの例外クラス間には厳密な継承関係があることを知っておく必要があります。図 1 は、Python の一般的な例外クラス間の継承関係を示しています。

図 1 からわかるように、BaseException は Python のすべての例外クラスの基本クラスですが、私たちにとって最も重要なのは Exception クラスです。プログラム 発生する可能性のあるさまざまな例外は Exception から継承されます。

したがって、ユーザーがカスタム例外を実装したい場合は、BaseException を継承するのではなく、Exception クラスを継承する必要があります。例外クラスをカスタマイズする方法については、「Python カスタム例外クラス」セクションを参照してください。

try ブロックが例外オブジェクトをキャプチャすると、Python インタープリタは、例外タイプと、各例外ブロックで指定された例外クラスを順番に比較します。キャプチャされた例外クラスが、例外ブロック後の例外クラスと異なる場合は、 , 例外クラスが同じであるか、例外クラスのサブクラスである場合、Python インタープリターは例外を処理するためにこの例外ブロックを呼び出します。それ以外の場合、Python インタープリターは最後の例外と比較されるまで比較を続けます。比較が成功しない場合は、例外を処理できないことがわかります。

図 2 は、プログラムの try ブロックで例外が発生した場合の、例外のキャッチから例外の処理までのプロセス全体を示しています。

簡単な例外キャプチャの例をいくつか見てみましょう:

try:
  a = int(input("输入 a:"))
  b = int(input("输入 b:"))
  print( a/b )
except ValueError:
  print("数值错误:程序只能接收整数参数")
except ArithmeticError:
  print("算术错误")
except Exception:
  print("未知异常")
ログイン後にコピー

このプログラムでは、ユーザーによる a と b の値の入力によっては、次のような問題が発生する可能性があります。 ValueError、ArithmeticError 例外:

  • ユーザーが入力した a または b が数字ではなく他の文字である場合、ValueError 例外が発生します。try ブロックはこのタイプの例外をキャプチャします。 Python インタプリタは、例外を処理するために最初のブロックが呼び出されます;

  • ユーザーが入力した a と b が数値であるが、除数であるため b の値が 0 である場合除算演算中に 0 にすることはできません。したがって、ArithmeticError 例外が発生し、try ブロックが例外をキャッチします。同時に、Python インタープリタは 2 番目のException ブロックを呼び出して例外を処理します。

  • もちろん、プログラムの実行中に、他の理由も考えられます。例外が発生した場合、try ブロックがそれをキャッチし、Python は最後の例外ブロックを呼び出して処理します。

try ブロックに複数の例外ブロックが装備されている場合、これらの例外ブロックは、ブロックを除くすべての例外を処理できる順序付け規則に従う必要があります (パラメータは Exception など (どちらも記述されていません))すべての例外ブロックの後に配置する必要があり、親クラス例外のすべての例外ブロックの後に、サブクラス例外の例外ブロックの後に配置する必要があります。

推奨チュートリアル: 「Python チュートリアル

以上がPythonの例外処理の仕組みを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート