Python エラーと組み込み例外
Python エラーと組み込み例外
このチュートリアルでは、Python に組み込まれているさまざまな種類のエラーと例外について学習します。これらは、Python インタープリターがエラーに遭遇するたびに発生します。
ビデオ:Python 例外処理
プログラムを書いているときに、実行しようとしたときにエラーにつながる特定の間違いを犯すことがあります。 Python プログラムは、未処理のエラーが発生するとすぐに終了します。これらのエラーは、大きく 2 つのクラスに分類できます。
<オール>Python 構文エラー
言語の正しい構造 (構文) に従わないことによって発生するエラーは、構文エラー と呼ばれます。 または解析エラー .
一例を見てみましょう:
>>> if a < 3
File "<interactive input>", line 1
if a < 3
^
SyntaxError: invalid syntax
例に示すように、矢印はパーサーが構文エラーに遭遇した場所を示します。
ここで、コロン :
が if
にありません
Python 論理エラー (例外)
実行時 (構文テストに合格した後) に発生するエラーは、例外と呼ばれます。 または論理エラー .
たとえば、存在しないファイル (読み取り用) を開こうとしたときに発生します (FileNotFoundError
)、数値をゼロで除算してみてください (ZeroDivisionError
)、または存在しないモジュールをインポートしようとしました (ImportError
) ).
これらのタイプの実行時エラーが発生するたびに、Python は例外オブジェクトを作成します。適切に処理されない場合、そのエラーのトレースバックと、そのエラーが発生した理由に関する詳細が出力されます。
Python がこれらのエラーをどのように処理するかを見てみましょう:
>>> 1 / 0
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
>>> open("imaginary.txt")
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'
Python 組み込みの例外
不正な操作によって例外が発生する可能性があります。 Python には、対応するエラーが発生したときに発生する組み込み例外が多数あります。組み込みの local()
を使用して、すべての組み込み例外を表示できます。 次のように機能します:
print(dir(locals()['__builtins__']))
locals()['__builtins__']
組み込みの例外、関数、および属性のモジュールを返します。 dir
これらの属性を文字列としてリストできます。
Python プログラミングの一般的な組み込み例外の一部と、それらの原因となるエラーを以下に示します:
例外 | エラーの原因 |
---|---|
AssertionError | assert のときに発生します ステートメントは失敗します。 |
AttributeError | 属性の割り当てまたは参照が失敗したときに発生します。 |
EOFError | input() のときに発生します 関数がファイル終了条件に達しました。 |
FloatingPointError | 浮動小数点演算が失敗したときに発生します。 |
GeneratorExit | ジェネレーターの close() の場合にレイズします メソッドが呼び出されます。 |
ImportError | インポートされたモジュールが見つからない場合に発生します。 |
IndexError | シーケンスのインデックスが範囲外の場合に発生します。 |
KeyError | 辞書にキーが見つからない場合に発生します。 |
KeyboardInterrupt | ユーザーが割り込みキーを押したときに発生します (Ctrl+C または Delete ). |
MemoryError | 操作でメモリが不足したときに発生します。 |
NameError | 変数がローカルまたはグローバル スコープで見つからない場合に発生します。 |
NotImplementedError | 抽象メソッドによって発生します。 |
OSError | システム操作によってシステム関連のエラーが発生した場合に発生します。 |
OverflowError | 算術演算の結果が大きすぎて表現できない場合に発生します。 |
ReferenceError | ガベージ コレクションされた参照先にアクセスするために弱い参照プロキシが使用されたときに発生します。 |
RuntimeError | エラーが他のカテゴリに該当しない場合に発生します。 |
StopIteration | next() によって発生 イテレータによって返されるアイテムがこれ以上ないことを示す関数。 |
SyntaxError | 構文エラーが発生したときにパーサーによって発生します。 |
IndentationError | インデントが正しくない場合に発生します。 |
TabError | インデントが一貫性のないタブとスペースで構成されている場合に発生します。 |
SystemError | インタプリタが内部エラーを検出したときに発生します。 |
SystemExit | sys.exit() によって発生 関数。 |
TypeError | 関数または操作が不適切な型のオブジェクトに適用されたときに発生します。 |
UnboundLocalError | 関数またはメソッドでローカル変数が参照されたが、その変数に値がバインドされていない場合に発生します。 |
UnicodeError | Unicode 関連のエンコードまたはデコード エラーが発生したときに発生します。 |
UnicodeEncodeError | エンコード中に Unicode 関連のエラーが発生した場合に発生します。 |
UnicodeDecodeError | デコード中に Unicode 関連のエラーが発生した場合に発生します。 |
UnicodeTranslateError | 翻訳中に Unicode 関連のエラーが発生した場合に発生します。 |
ValueError | 関数が正しい型の引数を取得したが、値が不適切な場合に発生します。 |
ZeroDivisionError | 除算またはモジュロ演算の第 2 オペランドがゼロの場合に発生します。 |
必要に応じて、Python で独自の例外を定義することもできます。それらの詳細については、Python ユーザー定義の例外にアクセスしてください。
これらの組み込みおよびユーザー定義の例外は、Python で try
を使用して処理できます。 、 except
と finally
ステートメント。それらの詳細については、Python の try、except、および finally ステートメントを参照してください。
Python