- 1 第四階層以降
- 1.1 「ArithmeticError」のサブクラス
- 1.2 「ImportError」のサブクラス
- 1.3 「LookupError」のサブクラス
- 1.4 「NameError」のサブクラス
- 1.5 「OSError」のサブクラス
- 1.5.1 BlockingIOError
- 1.5.2 ChildProcessError
- 1.5.3 ConnectionError
- 1.5.4 ConnectionError > BrokenPipeError
- 1.5.5 ConnectionError > ConnectionAbortedError
- 1.5.6 ConnectionError > ConnectionRefusedError
- 1.5.7 ConnectionError > ConnectionResetError
- 1.5.8 FileExistsError
- 1.5.9 FileNotFoundError
- 1.5.10 InterruptedError
- 1.5.11 IsADirectoryError
- 1.5.12 NotADirectoryError
- 1.5.13 PermissionError
- 1.5.14 ProcessLookupError
- 1.5.15 TimeoutError
- 1.6 「RuntimeError」のサブクラス
- 1.7 「SyntaxError」のサブクラス
- 1.8 「ValueError」のサブクラス
- 1.9 「Warning」のサブクラス
- 2 まとめ
第四階層以降
第三階層以下のサブクラスに相当する箇所の例外です。
「>」を記載している場合は、階層が深くなることを示しています。
「ArithmeticError」のサブクラス
「ArithmeticError」のサブクラスに相当する例外をまとめます。
FloatingPointError
3.7以降では、使われていない例外です。
浮動小数点演算が失敗した場合に発生していました。
OverflowError
算術演算の結果を処理・表現することができないほど大きな値になった場合に発生します。
ZeroDivisionError
除算や剰余演算で、「0」で割るような計算を行った場合に発生する例外です。
発生時は、その演算における被演算子と演算子の型を示します。
「ImportError」のサブクラス
「ImportError」のサブクラスに相当する例外をまとめます。
ModuleNotFoundError
以下のいずれかの条件を満たす際に発生する例外です。
- 「import 文で指定したモジュール」が見つからない場合
- 「sys.modules」 に None が含まれる場合
「LookupError」のサブクラス
「LookupError」のサブクラスに相当する例外をまとめます。
IndexError
シーケンスの添字が範囲外の場合に発生する例外です。
なお、Indexが整数でない場合は、 TypeError となります。
KeyError
辞書(マッピング)のキーが、見つからなかった場合に発生する例外です。
「NameError」のサブクラス
「NameError」のサブクラスに相当する例外をまとめます。
UnboundLocalError
関数やメソッド内のローカルな変数を参照した場合に、変数が空だった(値が代入されていない)場合に発生する例外です。
「OSError」のサブクラス
「OSError」のサブクラスに相当する例外をまとめます。
なお、説明で使用している「errno」については、前編の「OSError」を(リンク)を参照ください。
BlockingIOError
ソケットなどのオブジェクトがブロッキングされない操作用として設定されている状態で、操作がブロックされる場合に発生する例外です。
「errno」の「EAGAIN」「EALREADY」「EWOULDBLOCK」「EINPROGRESS」に対応しています。
なお、「BlockingIOError」では、「OSError」の属性の他に以下の属性を持ちます。
属性 | 説明 |
characters_written | ストリームがブロックされるまでに書き込まれた文字数を含む整数です。 「io」からのバッファ「I/Oクラス」を使っているときに利用できます。 |
ChildProcessError
子となるプロセスでの操作が失敗した場合に発生する例外です。
「errno」の「ECHILD」に対応しています。
ConnectionError
「BrokenPipeError」「ConnectionAbortedError」「ConnectionRefusedError」「ConnectionResetError」の基底クラスになっています。
コネクションに関わるエラーがまとまっています。
ConnectionError > BrokenPipeError
以下のいずれかの操作を行った場合に発生する例外です。
- パイプのもう一方の端が閉じられた状態で書き込みを試みる。
- 書き込み用にシャットダウンされたソケットに書き込みを試みる。
「errno」の「EPIPE」「ESHUTDOWN」に対応しています。
ConnectionError > ConnectionAbortedError
接続先によって接続試行が中断された場合に発生する例外です。
「errno」の「ECONNABORTED」に対応しています。
ConnectionError > ConnectionRefusedError
接続先によって接続試行が拒否された場合に発生する例外です。
「errno」の「ECONNREFUSED」に対応しています。
ConnectionError > ConnectionResetError
接続先によって接続がリセットされた場合に発生する例外です。
「errno」の「ECONNRESET」に対応しています。
FileExistsError
ファイルまたはディレクトリを作成しようとした際に、すでに存在している場合に発生する例外です。
「errno」の「EEXIST」に対応しています。
FileNotFoundError
要求されたファイルまたはディレクトリが見つからない場合に発生する例外です。
「errno」の「ENOENT」に対応しています。
InterruptedError
システムコールが入力信号によって中断された場合に発生する例外です。
「errno」の「EINTR」に対応しています。
IsADirectoryError
ディレクトリに対して、ファイル操作が要求された場合に発生する例外です。
「errno」の「EISDIR」に対応しています。
NotADirectoryError
ディレクトリではないものに対して、ディレクトリ操作が要求された場合に発生する例外です。
「errno」の「ENOTDIR」に対応しています。
PermissionError
権限がない操作を実行しようとした場合に発生する例外です。
「errno」の「EACCES」「EPERM」に対応しています。
ProcessLookupError
指定されたプロセスが存在しない場合に発生する例外でです。
「errno」の「ESRCH」に対応しています。
TimeoutError
システム関数がシステムレベルでタイムアウトした場合に発生する例外でです。
「errno」の「ETIMEDOUT」に対応しています。
「RuntimeError」のサブクラス
「RuntimeError」のサブクラスに相当する例外をまとめます。
NotImplementedError
ユーザが定義した基底クラスにおいて、抽象メソッドが派生クラスでオーバライドされることを要求する場合に、発生させなければならない例外です。
もしくは、実装が必要なことを示しています。
演算子やメソッドがサポートされていないことを示す場合は、「未定義のまま」もしくは「Noneを設定(サブクラスの場合)」を行うのが良いです。
RecursionError
インタープリタが再帰深度の限界を超えた場合に発生する例外です。
バージョン 3.4以前では、RuntimeErrorとして扱っていたようです。
「SyntaxError」のサブクラス
「SyntaxError」のサブクラスに相当する例外をまとめます。
IndentationError
「TabError」の基底クラスになっています。
IndentationError > TabError
「IndentationError」のサブクラスに相当します。
正しく用いられていない「タブ」「スペース」がある場合に発生する例外です。
「ValueError」のサブクラス
「ValueError」のサブクラスに相当する例外をまとめます。
UnicodeError
「UnicodeEncodeError」「UnicodeDecodeError」「UnicodeTranslateError」の基底クラスになっています。
Unicodeに関するエンコードまたはデコードのエラーが発生した場合に、発生する例外がまとまっています。
UnicodeErrorはエンコードまたはデコードのエラーに関する情報を属性として持っています。(下表を参照)
属性 | 説明 |
encoding | エラーを送出したエンコーディングの名称です。 |
reason | エラー内容を説明する文字列です。 |
object | エンコードまたはデコードしようとしたobjectです。 |
start | object の最初の無効なデータのIndexです。 |
end | object の最後の無効なデータの次のIndexです。 |
UnicodeError > UnicodeEncodeError
Unicode関連のエラーがエンコード中に発生した場合に発生する例外です。
UnicodeError > UnicodeDecodeError
Unicode関連のエラーがデコード中に発生した場合に発生する例外です。
UnicodeError > UnicodeTranslateError
Unicode関連のエラーが変換中に発生した場合に発生する例外です。
「Warning」のサブクラス
「Warning」のサブクラスに相当する例外をまとめます。
DeprecationWarning
他のPython開発者へ向けて、使用を推奨しない機能についての警告の基底クラスです。
本警告を採用する例としては、「今後廃止することが決まっている機能」があります。
PendingDeprecationWarning
他のPython開発者へ向けて、使用を推奨しない機能についての警告の基底クラスです。
本警告を採用する例としては、「廃止するだろうけど、廃止を決定していない機能」があります。
よほどの明記しなければならない理由がない限り使われることはないでしょう。
基本的には廃止を決定した後に、「DeprecationWarning」が使わらることがほとんどです。
RuntimeWarning
あいまいなランタイム挙動に対する警告の基底クラスです。
SyntaxWarning
曖昧な構文に対する警告の基底クラスです。
UserWarning
ユーザコードによって生成される警告の基底クラスです。
FutureWarning
エンドユーザーへ向けた「廃止予定の機能」についての警告の基底クラスです。
ImportWarning
モジュールインポートの誤りと思われるものに対する警告の基底クラスです。
UnicodeWarning
Unicode に関連した警告の基底クラスです。
BytesWarning
bytes や bytearray に関連した警告の基底クラスです。
EncodingWarning
エンコーディングに関連する警告に対する基底クラスです。
ResourceWarning
リソースの使用に関連した警告の基底クラスです。
まとめ
今回は、Pythonに存在する例外の一部について記載しました。
try-except文による例外処理などで利用する機会もあると思います。
ぜひ、参考にしてみて下さい。