【Python】使用できる例外処理の種類とexception一覧

この記事では、Pythonにおける例外処理の方法と、具体的な例外の種類について解説します。

例外処理は、プログラムの実行中に予期しないエラーが発生した場合に、プログラムがクラッシュするのを防ぐために使用されます。

初心者の方でもわかりやすく、サンプルコードとともに例外処理の基本を見ていきましょう。

目次から探す

例外処理の方法

例外処理は、プログラムの実行中に予期しないエラーが発生した場合に、プログラムがクラッシュするのを防ぐために使用されます。

Pythonでは、try-except文を使用して例外処理を行います。

try-except文の基本構文

try:
    # 例外が発生する可能性のあるコード
except Exception:
    # 例外が発生した場合の処理

tryブロック内のコードが実行され、例外が発生しなければそのまま処理が続行されます。

しかし、例外が発生した場合は、exceptブロック内の処理が実行されます。

複数の例外をまとめて処理する方法

複数の例外をまとめて処理する場合は、複数のexceptブロックを使用します。

try:
    # 例外が発生する可能性のあるコード
except ExceptionType1:
    # 例外1が発生した場合の処理
except ExceptionType2:
    # 例外2が発生した場合の処理

else節とfinally節の使い方

else節は、tryブロック内のコードが例外なく実行された場合に実行されるブロックです。

try:
    # 例外が発生する可能性のあるコード
except Exception:
    # 例外が発生した場合の処理
else:
    # 例外が発生しなかった場合の処理

finally節は、例外の有無に関わらず、必ず実行されるブロックです。

try:
    # 例外が発生する可能性のあるコード
except Exception:
    # 例外が発生した場合の処理
finally:
    # 例外の有無に関わらず実行される処理

基本的な例外

exception

exceptionは、すべての例外の基底クラスです。

他の例外クラスは、このexceptionクラスを継承しています。

ArithmeticError

ArithmeticErrorは、算術演算に関連するエラーを表す例外クラスです。

例えば、0除算やオーバーフローなどが該当します。

BufferError

BufferErrorは、バッファ操作に関連するエラーを表す例外クラスです。

LookupError

LookupErrorは、シーケンスやマッピングの検索操作に関連するエラーを表す例外クラスです。

IndexErrorやKeyErrorなどが該当します。

具象例外

AssertionError

AssertionErrorは、assert文の条件がFalseの場合に発生する例外です。

AttributeError

AttributeErrorは、属性へのアクセスが失敗した場合に発生する例外です。

EOFError

EOFErrorは、入力の終わりに達した場合に発生する例外です。

FloatingPointError

FloatingPointErrorは、浮動小数点演算に関連するエラーを表す例外クラスです。

GeneratorExit

GeneratorExitは、ジェネレータ関数が終了する際に発生する例外です。

ImportError

ImportErrorは、モジュールのインポートに関連するエラーを表す例外クラスです。

ModuleNotFoundError

ModuleNotFoundErrorは、指定されたモジュールが見つからなかった場合に発生する例外です。

IndexError

IndexErrorは、シーケンスのインデックスが範囲外の場合に発生する例外です。

KeyError

KeyErrorは、辞書のキーが存在しない場合に発生する例外です。

KeyboardInterrupt

KeyboardInterruptは、ユーザーがキーボードの割り込みキーを押した場合に発生する例外です。

MemoryError

MemoryErrorは、メモリの割り当てに失敗した場合に発生する例外です。

NameError

NameErrorは、変数や関数が定義されていない場合に発生する例外です。

NotImplementedError

NotImplementedErrorは、未実装のメソッドが呼び出された場合に発生する例外です。

OSError([arg])

OSErrorは、オペレーティングシステムに関連するエラーを表す例外クラスです。

OverflowError

OverflowErrorは、演算結果がオーバーフローした場合に発生する例外です。

RecursionError

RecursionErrorは、再帰呼び出しが深すぎる場合に発生する例外です。

ReferenceError

ReferenceErrorは、無効な参照が発生した場合に発生する例外です。

RuntimeError

RuntimeErrorは、実行時に発生する一般的なエラーを表す例外クラスです。

StopIteration

StopIterationは、イテレータが終了したことを示す例外です。

StopAsyncIteration

StopAsyncIterationは、非同期イテレータが終了したことを示す例外です。

SyntaxError

SyntaxErrorは、構文エラーがある場合に発生する例外です。

IndentationError

IndentationErrorは、インデントのエラーがある場合に発生する例外です。

TabError

TabErrorは、タブとスペースの混在によるエラーがある場合に発生する例外です。

SystemError

SystemErrorは、インタープリタ内部のエラーを表す例外クラスです。

SystemExit

SystemExitは、sys.exit()関数が呼び出された場合に発生する例外です。

TypeError

TypeErrorは、オブジェクトの型が不正な場合に発生する例外です。

UnboundLocalError

UnboundLocalErrorは、ローカル変数が初期化されていない場合に発生する例外です。

UnicodeError

UnicodeErrorは、Unicode関連のエラーを表す例外クラスです。

UnicodeEncodeError

UnicodeEncodeErrorは、Unicode文字列のエンコードに関連するエラーを表す例外クラスです。

UnicodeDecodeError

UnicodeDecodeErrorは、Unicode文字列のデコードに関連するエラーを表す例外クラスです。

UnicodeTranslateError

UnicodeTranslateErrorは、Unicode文字列の変換に関連するエラーを表す例外クラスです。

ValueError

ValueErrorは、引数の値が不正な場合に発生する例外です。

ZeroDivisionError

ZeroDivisionErrorは、0除算が発生した場合に発生する例外です。

OS例外

BlockingIOError

BlockingIOErrorは、非同期I/O操作がブロックされた場合に発生する例外です。

ChildProcessError

ChildProcessErrorは、子プロセスに関連するエラーを表す例外クラスです。

ConnectionError

ConnectionErrorは、接続に関連するエラーを表す例外クラスです。

BrokenPipeError

BrokenPipeErrorは、パイプが切断された場合に発生する例外です。

ConnectionAbortedError

ConnectionAbortedErrorは、接続が中断された場合に発生する例外です。

ConnectionRefusedError

ConnectionRefusedErrorは、接続が拒否された場合に発生する例外です。

ConnectionResetError

ConnectionResetErrorは、接続がリセットされた場合に発生する例外です。

FileExistsError

FileExistsErrorは、既に存在するファイルを作成しようとした場合に発生する例外です。

FileNotFoundError

FileNotFoundErrorは、指定されたファイルが見つからなかった場合に発生する例外です。

InterruptedError

InterruptedErrorは、システムコールが割り込まれた場合に発生する例外です。

IsADirectoryError

IsADirectoryErrorは、ディレクトリに対してファイル操作を行おうとした場合に発生する例外です。

NotADirectoryError

NotADirectoryErrorは、ディレクトリでないものに対してディレクトリ操作を行おうとした場合に発生する例外です。

PermissionError

PermissionErrorは、アクセス権のエラーを表す例外クラスです。

ProcessLookupError

ProcessLookupErrorは、プロセスが見つからなかった場合に発生する例外です。

TimeoutError

TimeoutErrorは、タイムアウトが発生した場合に発生する例外です。

ユーザー定義の例外の作成方法

自作例外クラスの作成方法

Pythonでは、ユーザーが独自の例外クラスを作成することができます。

自作例外クラスを作成するには、Exceptionクラスを継承します。

class CustomException(Exception):
    pass

例外クラスの継承とカスタマイズ

自作例外クラスを作成する際には、Exceptionクラスを継承してカスタマイズすることができます。

例外クラスには、エラーメッセージや追加の属性を追加することができます。

class CustomException(Exception):
    def __init__(self, message, additional_info):
        super().__init__(message)
        self.additional_info = additional_info

このようにして作成した自作例外クラスは、try-except文で捕捉することができます。

以上がPythonで使用できる例外処理の種類とexception一覧です。

例外処理は、プログラムの安定性を高めるために重要な機能ですので、ぜひ活用してみてください。

目次から探す