Python 例外処理: try、catch、finally & raise [例]

Pythonの例外処理とは何ですか?

例外とは、プログラムの実行時に発生するエラーのことです。 ただし、プログラムの実行中に、Python はプログラムのクラッシュを避けるために処理する必要がある例外を生成します。 Python 言語では、例外はエラー時に自動的にトリガーされます。あるいは、コードによって例外がトリガーされてインターセプトされることもあります。

例外は、イベントが発生する可能性はあるものの、このタイプのイベントはめったに発生しないことを示します。 メソッドが例外を処理できない場合、例外は呼び出し元関数にスローされます。 最終的に、メイン関数から例外がスローされると、プログラムは突然終了します。

例外の一般的な例

  • ゼロ除算
  • 存在しないファイルにアクセスしています。
  • 互換性のない XNUMX つのタイプの追加
  • シーケンスの存在しないインデックスにアクセスしようとしています
  • 切断されたデータベース サーバーからテーブルを削除します。
  • ATMでの利用可能額以上の引き出し

なぜ例外を使用する必要があるのでしょうか?

Python で例外を使用する理由は次のとおりです。

  • 例外処理を使用すると、エラー処理コードを通常のコードから分離できます。
  • 例外は Pythonオブジェクト これはエラーを表します。
  • コードのコメントと同様、例外はプログラムが何を期待しているかを思い出すのに役立ちます。
  • コードが明確になり、可読性が向上します。
  • エラー処理が XNUMX か所で XNUMX つの方法で行われるため、結果を刺激することができます。
  • 例外は、エラー メッセージを処理するための便利な方法です。
  • Python では、raiseException メソッドを使用してプログラム内で例外を発生させることができます。
  • 例外を発生させると、現在のコードの実行を中断し、例外が処理されるまで例外を期待値に戻すのに役立ちます。
  • 直接処理できないコンポーネントの例外を処理します。

例外規定

Python 例外処理の重要なルールをいくつか示します。

  • 例外はクラスオブジェクトでなければなりません
  • クラス例外の場合は、特定のクラスを言及する例外句を指定した try ステートメントを使用できます。
  • ステートメントまたは式が構文的に正しい場合でも、それを実行しようとするとエラーが表示される場合があります。
  • 実行中に見つかったエラーは例外と呼ばれ、無条件に致命的なものではありません。

Python の例外処理メカニズム

例外処理は次のように管理されます。wing 5つのキーワード:

  1. 試します
  2. キャッチ
  3. 最後に
  4. 投げる

Python Try ステートメント

try ステートメントには、キーワード try が含まれ、その後にコロン (:) と例外が発生する可能性のある一連のコードが続きます。 XNUMX つ以上の句があります。

try ステートメントの実行中に例外が発生しなかった場合、インタープリターはその特定の try ステートメントの例外ハンドラーを無視します。

場合に備えて、try スイートで例外が発生した場合、try スイートは期限切れになり、プログラム制御はマッチング例外ハンドラーに移行します。wing トライスイート。

Syntax:
try:
statement(s)

キャッチステートメント

Catch ブロックは、一度に XNUMX つの引数を受け取ります。これは、キャッチする可能性が高い例外のタイプです。 これらの引数は、特定の種類の例外から、例外のすべてを網羅するカテゴリまで、さまざまです。

catch ブロックのルール:

  • キーワード catch を使用して catch ブロックを定義できます。
  • Catch Exception パラメータは常に括弧で囲まれます
  • これは常に、catch ブロックが処理する例外のタイプを表します。
  • 例外処理コードは XNUMX つの中括弧 {} の間に記述されます。
  • XNUMX つの try ブロック内に複数の catch ブロックを配置できます。
  • catch ブロックは、try ブロックの後にのみ使用できます。
  • すべての catch ブロックは、サブクラス例外からスーパークラス例外へと順序付けされる必要があります。

例:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

最後に Python でのステートメント

最後に、ブロックは、例外がスローされるかどうかに関係なく、常に実行されます。 Final キーワードを使用すると、try-catch ブロックに続くコード ブロックを作成できます。

最後に、句はオプションです。 これは、すべての条件で実行されるべきクリーンアップ アクションを定義することを目的としています。

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

最後に、try ステートメントの前に句が実行されます。

Python での Raise ステートメント

raise ステートメントは、例外オブジェクトを初期化する引数を指定します。 ここで、例外名の後にカンマが続き、引数または引数のタプルがカンマの後に続きます。

構文:

raise [Exception [, args [, traceback]]]

この構文では、引数はオプションであり、実行時の例外引数値は常に none です。
例:
A Python 例外には、文字列、クラス、数値、オブジェクトなどの任意の値を指定できます。 Python コアによって発生するこれらの例外のほとんどは、クラスのインスタンスである引数を持つクラスです。

重要な Python エラー

エラータイプ Description
算術エラー ArithmeticError は、すべての算術例外の基本クラスとして機能します。 算術演算のエラーに対して発生します。
インポート エラー ImportError は、存在しないモジュールをインポートしようとすると発生します。 この種の例外は、モジュール名の入力ミス、または標準パスに存在しないモジュールの場合に発生します。
インデックスエラー 範囲外のシーケンスを参照しようとすると、IndexError が発生します。
キーエラー 特定のキーが辞書内に見つからない場合、KeyError 例外が発生します。
名前エラー NameError は、ローカルまたはグローバル名前空間に存在しない名前がコード内で参照されると発生します。
値エラー 値エラーは、関数または組み込み操作が、正しい型であっても適切な値を持たない引数を受け取った場合に発生します。
EOFエラー この種のエラーは、組み込み関数 (input() または raw_input()) の XNUMX つがデータをまったく読み取らないまま EOF 状態に達した場合に発生します。
ZeroDivisionError このタイプのエラーは、すべての数値型に対してゼロによる除算またはモジュールが発生した場合に発生します。
IOエラー- この種のエラーは、入出力操作が失敗したときに発生します。
構文エラー Python 構文にエラーがある場合に発生する SyntaxErrors。
インデントエラー このエラーは、インデントが適切に定義されていない場合に発生します。

その他の重要な Python 例外

例外 Description
算術例外 ゼロ除算などの算術エラー。
ArrayIndexOutOfBoundsException 配列インデックスが範囲外です。
配列ストア例外 代入すると、互換性のない型の配列要素を割り当てることができます。
クラスキャスト例外 無効なキャスト
MlegalMonitorStateException ロックされていないスレッドを待機するなど、不正なモニター操作。
MlegalStateException 環境またはアプリケーションが間違った状態にあります。
クラスが見つかりません例外 クラスが見つかりません。
CloneNotSupportedException Cloneable インターフェイスを実装していないオブジェクトのクローンを作成しようとしました。
不正アクセス例外 クラスへのアクセスが拒否されました。
インスタンス化例外 インターフェイスまたは抽象クラスのオブジェクトを作成しようとすると発生します。
CloneNotSupportedException インターフェイスを実装していないオブジェクトのクローンを作成しようとしました。

エラーと例外

エラー 例外
Python のすべてのエラーはチェックされていないタイプです。 例外には、チェックされたタイプとチェックされていないタイプの両方が含まれます。
コンパイラには認識されないエラーが実行時に発生します。 例外は、try-catch ブロックを使用して処理することで回復できます。
エラーのほとんどは、アプリケーションが実行されている環境によって発生します。 アプリケーション自体が例外を引き起こします。
例:
メモリ不足エラー
例:
チェックされた例外、SQL 例外、NullPointerException など。

まとめ

  • 例外とは、プログラムの実行中に発生したエラーです。
  • 例外は、イベントが発生する可能性はあるものの、このタイプのイベントはめったに発生しないことを示します。
  • 例外の一般的な例は、1) ゼロによる除算、2) 存在しないファイルへのアクセス、3) 互換性のない XNUMX つの型の追加です。
  • 例外は、エラーを表す Python オブジェクトです。
  • try ステートメントには、キーワード try が含まれ、その後にコロン (:) と例外が発生する可能性のある一連のコードが続きます。 XNUMX つ以上の句があります。
  • Catch ブロックは、一度に XNUMX つの引数を受け取ります。これは、キャッチする可能性が高い例外のタイプです。
  • raise ステートメントは、例外オブジェクトを初期化する引数を指定します。
  • 最後に、ブロックは、例外がスローされるかどうかに関係なく、常に実行されます。