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

例外処理とは何か Python?
例外とは、プログラムの実行時に発生するエラーです。しかし、プログラムの実行中は、 Python プログラムがクラッシュしないように処理する必要がある例外を生成します。 Python 言語によっては、例外はエラー時に自動的にトリガーされるか、コードによってトリガーおよびインターセプトされることがあります。
例外は、イベントが発生する可能性はあるものの、このタイプのイベントはめったに発生しないことを示します。 メソッドが例外を処理できない場合、例外は呼び出し元関数にスローされます。 最終的に、メイン関数から例外がスローされると、プログラムは突然終了します。
例外の一般的な例
- ゼロ除算
- 存在しないファイルにアクセスしています。
- 互換性のない XNUMX つのタイプの追加
- シーケンスの存在しないインデックスにアクセスしようとしています
- 切断されたデータベース サーバーからテーブルを削除します。
- ATMでの利用可能額以上の引き出し
なぜ例外を使用する必要があるのでしょうか?
例外を使用する理由は次のとおりです。 Python:
- 例外処理を使用すると、エラー処理コードを通常のコードから分離できます。
- 例外は Python オブジェクト これはエラーを表します。
- コードのコメントと同様、例外はプログラムが何を期待しているかを思い出すのに役立ちます。
- コードが明確になり、可読性が向上します。
- エラー処理が XNUMX か所で XNUMX つの方法で行われるため、結果を刺激することができます。
- 例外は、エラー メッセージを処理するための便利な方法です。
- In Python、 raise exception メソッドを使用してプログラム内で例外を発生させることができます。
- 例外を発生させると、現在のコードの実行を中断し、例外が処理されるまで例外を期待値に戻すのに役立ちます。
- 直接処理できないコンポーネントの例外を処理します。
例外規定
ここで重要なルールをいくつか紹介します Python 例外処理:
- 例外はクラスオブジェクトでなければなりません
- クラス例外の場合は、特定のクラスを言及する例外句を指定した try ステートメントを使用できます。
- ステートメントまたは式が構文的に正しい場合でも、それを実行しようとするとエラーが表示される場合があります。
- 実行中に見つかったエラーは例外と呼ばれ、無条件に致命的なものではありません。
Python 例外処理メカニズム
例外処理は次の 5 つのキーワードによって管理されます。
- 試します
- キャッチ
- 最後に
- 投げる
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 など。 |
