Python の例外処理:try、catch、finally、raise [例]
Python の例外処理とは?
例外とは、プログラムの実行時に発生するエラーです。ただし、プログラムの実行中に Python は例外を生成し、プログラムがクラッシュしないように処理する必要があります。 Python 言語では、例外はエラー時に自動的にトリガーされるか、コードによってトリガーおよびインターセプトされる可能性があります。
例外は、イベントが発生する可能性はあるものの、このタイプのイベントがまれにしか発生しないことを示しています。メソッドが例外を処理できない場合、呼び出し元の関数にスローされます。最終的に、メイン関数から例外がスローされると、プログラムは突然終了します。
この Python 例外処理チュートリアルでは、次のことを学びます:
- Python の例外とは?
- 例外の一般的な例
- 例外を使用する理由
- 例外規定
- Python 例外処理メカニズム
- Python の Try ステートメント
- Python Catch ステートメント
- Python でステートメントを発生させる
- 重要な Python エラー
- その他の重要な Python 例外
- エラーと例外
例外の一般的な例:
- ゼロ除算
- 存在しないファイルへのアクセス
- 互換性のない 2 つのタイプの追加
- シーケンスの存在しないインデックスにアクセスしようとしています
- 切断されたデータベース サーバーからテーブルを削除しています。
- 利用可能額を超えるATM引き出し
例外を使用する理由
Python で例外を使用する理由は次のとおりです。
- 例外処理により、エラー処理コードを通常のコードから分離できます。
- 例外は、エラーを表す Python オブジェクトです。
- コード コメントと同様に、例外は、プログラムが何を期待しているかを思い出すのに役立ちます。
- コードが明確になり、読みやすくなります。
- エラー処理が 1 か所で 1 つの方法で行われるため、結果を刺激することができます。
- 例外は、エラー メッセージを処理するための便利な方法です。
- Python では、raise exception メソッドを使用して、プログラムで例外を発生させることができます。
- 例外を発生させると、現在のコードの実行を中断し、例外が処理されるまで期待どおりに戻すことができます。
- 直接処理できないコンポーネントの例外を処理する
例外の規則
Python 例外処理の重要なルールを次に示します:
- 例外はクラス オブジェクトでなければなりません
- クラスの例外については、特定のクラスに言及する except 節で try ステートメントを使用できます。
- ステートメントや式が構文的に正しい場合でも、実行しようとするとエラーが表示される場合があります。
- 実行中に見つかったエラーは例外と呼ばれ、無条件に致命的なものではありません。
Python 例外処理メカニズム
例外処理は、次の 5 つのキーワードによって管理されます。
<オール>Python の Try ステートメント
try ステートメントには、キーワード try が含まれ、その後にコロン (:) と、例外が発生する可能性がある一連のコードが続きます。 1 つ以上の節があります。
try ステートメントの実行中に例外が発生しなかった場合、インタープリターはその特定の try ステートメントの例外ハンドラーを無視します。
万が一、try スイートで例外が発生した場合、try スイートは期限切れになり、プログラム制御は、try スイートに続く一致する except ハンドラに移ります。
Syntax: try: statement(s)
catch ステートメント
Catch ブロックは、一度に 1 つの引数を取ります。これは、キャッチする可能性が高い例外のタイプです。これらの引数は、変更可能な特定のタイプの例外から、キャッチオール カテゴリの例外にまで及ぶ場合があります。
catch ブロックのルール:
- キーワード catch を使用して catch ブロックを定義できます
- Catch Exception パラメータは常に括弧で囲みます
- これは常に、ブロック ハンドルをキャッチする例外のタイプを表します。
- 例外処理コードは 2 つの {} 中括弧の間に記述されます。
- 1 つの try ブロック内に複数の catch ブロックを配置できます。
- try ブロックの後にのみ catch ブロックを使用できます。
- すべての catch ブロックは、サブクラスからスーパークラスの例外に順序付けする必要があります。
例:
try } catch (ArrayIndexOutOfBoundsException e) { System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) { System.err.printin("Caught second " + e.getMessage()); }
Python での Final ステートメント
finally ブロックは、例外がスローされるかどうかに関係なく、常に実行されます。 final キーワードを使用すると、try-catch ブロックに続くコード ブロックを作成できます。
最後に、句はオプションです。すべての条件で実行されるクリーンアップ アクションを定義することを目的としています。
try: raise KeyboardInterrupt finally: print 'welcome, world!' Output Welcome, world! KeyboardInterrupt
最後に、句は try ステートメントの前に実行されます。
Python でステートメントを発生させる
raise ステートメントは、例外オブジェクトを初期化する引数を指定します。ここでは、例外名の後にコンマが続き、コンマの後に引数または引数のタプルが続きます。
構文:
raise [Exception [, args [, traceback]]]
この構文では、引数はオプションであり、実行時の例外引数の値は常に none です。
例:
Python 例外は、文字列、クラス、数値、オブジェクトなどの任意の値にすることができます。 Python コアによって発生するこれらの例外のほとんどは、クラスのインスタンスである引数を持つクラスです。
重要な Python エラー
エラーの種類 | 説明 |
---|---|
算術エラー | ArithmeticError は、すべての算術例外の基本クラスとして機能します。算術演算のエラーで発生します。 |
インポートエラー | 存在しないモジュールをインポートしようとすると、ImportError が発生します。この種の例外は、モジュール名または標準パスに存在しないモジュールに入力ミスがある場合に発生します。 |
IndexError | 範囲外のシーケンスを参照しようとすると、IndexError が発生します。 |
KeyError | 辞書に特定のキーが見つからない場合、KeyError 例外が発生します。 |
NameError | 名前がローカルまたはグローバル名前空間に存在しないコードで参照されると、NameError が発生します。 |
ValueError | 関数または組み込み操作が、正しい型である可能性があるが適切な値を持たない引数を受け取ると、値エラーが発生します。 |
EOFエラー | この種のエラーは、組み込み関数 (input() または raw_input()) のいずれかがデータを読み取らずに EOF 条件に達したときに発生します。 |
ZeroDivisonError | このタイプのエラーは、すべての数値型に対してゼロによる除算またはモジュールが発生したときに発生します。 |
IOError- | この種のエラーは、入出力操作が失敗したときに発生します。 |
syntaxError | Python 構文にエラーがある場合に発生する SyntaxErrors。 |
インデントエラー | インデントが適切に定義されていない場合に発生するこのエラー |
その他の重要な Python 例外
例外 | 説明 |
---|---|
算術例外 | ゼロ除算などの算術エラー |
ArrayIndexOutOfBoundsException | 配列インデックスが範囲外です。 |
ArrayStoreException | 代入は、互換性のない型の配列要素に役立ちます。 |
ClassCastException | 無効なキャスト |
MlegalMonitorStateException | ロックされていないスレッドでの待機など、不正な監視操作。 |
MlegalStateException | 環境またはアプリケーションが間違った状態です。 |
ClassNotFoundException | クラスが見つかりません。 |
CloneNotSupportedException | Cloneable インターフェースを実装していないオブジェクトのクローンを作成しようとしています。 |
不正な AccessException | クラスへのアクセスが拒否されました。 |
InstantiationException | インターフェイスまたは抽象クラスのオブジェクトを作成しようとすると発生します。 |
CloneNotSupportedException | インターフェースを実装していないオブジェクトのクローンを作成しようとしています。 |
エラーと例外
エラー | 例外 |
---|---|
Python のエラーはすべて unchecked 型です。 | 例外には、チェックされているタイプとチェックされていないタイプの両方が含まれます。 |
実行時にコンパイラが認識できないエラーが発生します。 | try-catch ブロックを使用して例外を処理することで、例外を回復できます。 |
エラーは、ほとんどの場合、アプリケーションが実行されている環境によって発生します。 | アプリケーション自体が例外を引き起こします。 |
例: OutofMemoryError | 例: チェック例外、SQL 例外、NullPointerException など |
まとめ
- 例外とは、プログラムの実行中に発生したエラーです。
- 例外は、イベントが発生する可能性はあるものの、この種のイベントがまれにしか発生しないことを示しています。
- 例外の一般的な例は、1) ゼロによる除算、2) 存在しないファイルへのアクセス、3) 互換性のない 2 つの型の追加です。
- 例外は、エラーを表す Python オブジェクトです。
- try ステートメントには、キーワード try が含まれ、その後にコロン (:) と、例外が発生する可能性がある一連のコードが続きます。 1 つ以上の節があります。
- Catch ブロックは、一度に 1 つの引数を取ります。これは、キャッチされる可能性が高い例外のタイプです。
- raise ステートメントは、例外オブジェクトを初期化する引数を指定します。
- 最後に、例外がスローされるかどうかに関係なく、ブロックは常に実行されます。
Python