Python 例外処理: try、except、finally、raise

⚡ スマートサマリー

Python 例外処理によって、プログラムは実行時エラーにクラッシュすることなく対応できるようになります。ここでは、try、except、finally、raiseの仕組み、例外が重要な理由、そしてよく遭遇する組み込みエラーの種類について学びます。

  • ⚠️ それは何ですか: 例外とは、実行時エラーであり、 Python 何か問題が発生した場合に上昇する。
  • 🛡️ try / except: tryブロックはリスクのあるコードを実行しますが、exceptブロックは例外を捕捉して処理します。
  • 🧹 最終的に: finallyブロックは、例外が発生したかどうかに関わらず、必ず実行されます。
  • 🚀 上げる: raise文を使うと、意図的に例外を発生させることができます。
  • ???? エラーの種類: 一般的な例外としては、ValueError、KeyError、IndexError、ZeroDivisionErrorなどがあります。
  • 🤖 AIによる支援: CopilotのようなAIツールは、try-exceptブロックを生成し、エラーの種類を提案します。

Python 例外処理

例外処理とは何か Python?

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

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

例外の一般的な例

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

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

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

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

例外規定

ここで重要なルールをいくつか紹介します Python 例外処理:

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

Python 例外処理メカニズム

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

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

Python Tryステートメント

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

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

try スイートで例外が発生した場合、try スイートは期限切れとなり、プログラム制御は try スイートに続く対応する except ハンドラに移ります。

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 [Exception [, args [, traceback]]]

この構文では、引数はオプションであり、実行時の例外引数値は常に none です。
例:
A Python 例外は文字列、クラス、数値、オブジェクトなど任意の値を取ることができます。 Python core は、クラスのインスタンスである引数を持つクラスです。

重要 Python Errors

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

その他の重要な事項 Python 例外

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

エラーと例外

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

よくあるご質問

例外処理とは、実行時エラーに対応してプログラムがクラッシュしないようにするプロセスです。 Python tryブロックとexceptブロックを使用して例外を捕捉し、代わりに回復コードを実行します。

Code 失敗する可能性があるものは、try ブロックの中に入ります。例外が発生した場合、 Python 一致するexceptブロックにジャンプし、そこでエラーを処理してプログラムを続行します。

finallyブロックは例外が発生したかどうかに関わらず実行されるため、ファイルのクローズやリソースの解放など、必ず実行しなければならないクリーンアップタスクに最適です。

raise文は意図的に例外を発生させます。ValueErrorのような組み込み例外、またはカスタム例外を発生させることで、エラー状態が発生したことを通知できます。

SyntaxErrorのようなエラーは通常、回復不可能でプログラムを停止させます。例外は実行時イベントであり、tryブロックやexceptブロックで捕捉して処理できます。

GitHub CopilotのようなAIアシスタントは、try-exceptブロックを自動補完し、キャッチすべき適切な例外タイプを提案し、ロジックの簡単な説明から最終的なクリーンアップコードを生成します。

はい。AI搭載ツールでラッピングを自動化できます。ping try-exceptブロック内のコードはリスクが高いため、単純なexceptよりも具体的な例外処理を推奨し、ログ記録を追加して障害のデバッグを容易にする。

一般的な組み込み例外には、ValueError、TypeError、KeyError、IndexError、ImportError、NameError、ZeroDivisionErrorなどがあります。それぞれが、コード内の特定の種類の実行時エラーを示します。