ホームページ >バックエンド開発 >Python チュートリアル >Pythonの例外処理例を詳しく解説
1. 異常とは何ですか?
例外とは、プログラムの実行中に発生し、プログラムの通常の実行に影響を与えるイベントです。
一般に、Python がプログラムを正常に処理できない場合に例外が発生します。
例外は、エラーを表す Python オブジェクトです。
Python スクリプトで例外が発生した場合、それをキャッチして処理する必要があります。そうしないと、プログラムの実行が終了します。
2. 例外処理
例外をキャッチするには、try/Except ステートメントを使用できます。
try/Except ステートメントは、try ステートメント ブロック内のエラーを検出するために使用され、Except ステートメントが例外情報を取得して処理できるようにします。
例外が発生したときにプログラムを終了したくない場合は、try でキャッチしてください。
例外構文:
以下は、単純な try....excel...else の構文です:
try 句の実行時に例外が発生しない場合、Python は else ステートメントの後にステートメントを実行し (else がある場合)、制御フローは try ステートメント全体を通過します。
以下は簡単な例です。ファイルを開き、ファイルに内容を書き込みますが、例外は発生しません:
fh.write("これは例外処理用のテスト ファイルです!!")
例外 IOError:
print "エラー: ファイルが見つからないか、データを読み取れません"
else:
print "ファイルにコンテンツが正常に書き込まれました"
fh.close()
上記のプログラムの出力結果:
fh.write("これは例外処理用のテスト ファイルです!!")
例外 IOError:
print "エラー: ファイルが見つからないか、データを読み取れません"
else:
print "ファイルにコンテンツが正常に書き込まれました"
上記プログラムの出力結果:
次の例に示すように、例外タイプを指定せずに、Except を使用できます。
try-finally 使用例:
try:
fh = open("testfile", "w")
fh.write("これは例外処理用のテスト ファイルです!!")
finally:
print "エラー: ファイルが見つからないか、データを読み取れません。
try:
fh = open("testfile", "w")
try:
fh.write("これは例外処理用のテスト ファイルです!!")
最後に:
print "ファイルを閉じます"
fh.close()
例外 IOError:
print "エラー: ファイルが見つからないか、データを読み取れません"
6. 例外パラメータ
例外には、出力例外情報パラメータとして使用できるパラメータを含めることができます。
次に示すように、Except ステートメントを通じて例外パラメータをキャプチャできます。
# ここに関数を定義します。
def temp_convert(var):
try:
return int(var)
ValueError を除く、Argument:
print "引数に数値が含まれていませんn "、引数
# ここで上記の関数を呼び出します。
temp_convert("xyz");
raise の構文形式は次のとおりです:
7. ユーザー定義の例外インスタンス
新しい例外クラスを作成することで、プログラムは独自の例外に名前を付けることができます。例外は通常、直接的または間接的に Exception クラスから継承する必要があります。
次に、RuntimeError に関連する例を示します。この例では、基本クラスは RuntimeError であり、例外がトリガーされたときに詳細情報を出力するために使用されます。
try ステートメント ブロックでは、ユーザー定義の例外の後に、変数 e を使用して Networkerror クラスのインスタンスが作成されます。
Attachment: Python 標準例外
BaseExceptiona: すべての例外の基本クラス
SystemExitb python: インタープリターが終了を要求します
KeyboardInterruptc: ユーザーが実行を中断します (通常は入力) ^ C)
Exceptiond: 一般エラーの基本クラス
StopIteratione: イテレーターにはこれ以上値がありません
GeneratorExita: ジェネレーターで例外が発生し、終了に通知します
SystemExith: Python インタープリターが終了を要求します
StandardErrorg: すべての組み込み標準例外の基本クラス
ArithmeticErrord: すべての数値計算エラーの基本クラス
FloatingPointErrord: 浮動小数点計算エラー
OverflowError: 数値演算が最大制限を超えています
ZeroDivisionError: 除算 (またはモジュロ) ゼロ (すべてのデータ型)
AssertionErrord: アサーション ステートメントが失敗しました
AttributeError: オブジェクトにこの属性がありません
EOFError: 組み込み入力がありません、EOF フラグに達しました
EnvironmentErrord: オペレーティング システム エラー 基本クラス
IOError: 入出力操作が失敗しました
OSErrord: オペレーティング システム エラー
WindowsErrorh Windows: システム コールが失敗しました
ImportError: モジュール/オブジェクトのインポートに失敗しました
KeyboardInterruptf: ユーザー実行を中断します (通常は ^C を入力します)
LookupErrord: 無効なデータ クエリ 基本クラスです
IndexError: シーケンス内にそのようなインデックスはありません
KeyError: マップ内にそのようなキーはありません
MemoryError : メモリ不足エラー (Python インタプリタの場合は致命的ではありません)
NameError: 未宣言/初期化されたオブジェクト (プロパティがありません)
UnboundLocalErrorh: 未初期化のローカル変数へのアクセス
ReferenceErrore: 弱い参照が、次のようなオブジェクトにアクセスしようとしましたガベージ コレクションされました
RuntimeError: 一般的なランタイム エラー
NotImplementedErrord: メソッドがまだ実装されていません
SyntaxError: Python 構文エラー
IndentationErrorg: インデント エラー
TabErrorg: タブとスペースが混在しています
SystemError 一般インタープリタシステム エラー
TypeError: 型に対する無効な操作
ValueError: 渡されたパラメータが無効です
UnicodeErrorh: Unicode 関連のエラー
UnicodeDecodeErrori: Unicode デコード エラー
UnicodeEncodeErrori: Unicode エンコード エラー
UnicodeTranslateErrorf: Unicode変換エラー
Warningj: 警告の基本クラス
DeprecationWarningj: 非推奨の機能に関する警告
FutureWarningi: 構成要素に対する将来のセマンティック変更に関する警告
OverflowWarningk: Long への自動昇格に関する古い警告
PendingDeprecationWarningi:非推奨となる機能に関する警告
RuntimeWarningj: 不審なランタイム動作に関する警告
SyntaxWarningj: 不審な構文警告
UserWarningj: ユーザー コードによって生成された警告