Object-oriented-python-exception-classes
例外と例外クラス
一般的に、例外は異常な状態です。 例外は通常エラーを示しますが、プロシージャを早期に終了したり、リソース不足から回復したりする場合など、意図的にプログラムに入れます。 組み込みの例外がいくつかあります。これらの例外は、ファイルの終わりを超えて読み取る、またはゼロで除算するなどの条件を示します。 カスタム例外と呼ばれる独自の例外を定義できます。
例外処理を使用すると、エラーを適切に処理し、意味のあることを実行できます。 例外処理には、「スロー」と「キャッチ」の2つのコンポーネントがあります。
例外の特定(エラー)
Pythonで発生するすべてのエラーは、エラーの種類によって識別されるエラー状態になる例外を発生させます。
キャッチ/トラッピングの例外
プログラムで異常が発生し、例外メカニズムを使用してそれを処理する場合、「例外をスロー」します。 キーワードtryおよびexceptは、例外をキャッチするために使用されます。 tryブロック内でエラーが発生するたびに、Pythonはそれを処理するために一致する以外のブロックを探します。 ある場合、実行はそこでジャンプします。
構文
try句内のコードは、ステートメントごとに実行されます。
例外が発生した場合、残りのtryブロックはスキップされ、except句が実行されます。
プログラムでエラー処理メカニズムを使用しない場合に何が起こるかを確認するために、いくつかのコードを書きましょう。
上記のプログラムは、ユーザーが数字を入力する限り正しく動作しますが、ユーザーが他のデータ型(文字列やリストなど)を入力しようとするとどうなりますか。
現在、ValueErrorは例外タイプです。 上記のコードを例外処理で書き直してみましょう。
プログラムを実行し、(数値ではなく)文字列を入力すると、異なる結果が得られることがわかります。
例外を発生させる
独自のメソッドから例外を発生させるには、次のようなraiseキーワードを使用する必要があります
例を見てみましょう
プログラムを実行し、正の整数を入力します。
期待される出力
しかし、負の数を入力しようとすると、
期待される出力
カスタム例外クラスの作成
BaseExceptionクラスまたはBaseExceptionのサブクラスを拡張することにより、カスタム例外クラスを作成できます。
上記の図から、Pythonのほとんどの例外クラスがBaseExceptionクラスから拡張されていることがわかります。 BaseExceptionクラスまたはそのサブクラスから独自の例外クラスを派生できます。
NegativeNumberException.pyという新しいファイルを作成し、次のコードを記述します。
上記のコードは、NegativeNumberExceptionという名前の新しい例外クラスを作成します。これは、super()init()を使用して親クラスコンストラクターを呼び出し、年齢を設定するコンストラクターのみで構成されます。
次に、独自のカスタム例外クラスを作成するために、いくつかのコードを記述し、新しい例外クラスをインポートします。
出力
カスタム例外クラスを作成する別の方法。
出力
例外階層
組み込み例外のクラス階層は次のとおりです-