python放出異常
2233 ワード
Pythonが無効なコードを実行しようとすると、例外が放出されます.3章では、try文とexcept文を使用してPythonの例外を処理する方法を見ました.これにより、プログラムは予想された例外から回復できます.しかし、コードに自分の異常を投げ出すこともできます.異常を投げ出すと「この関数のコードの実行を停止し、プログラムの実行をexcept文に転送する」ということになります.例外を放出するにはraise文を使用します.コードでは、raise文には、•raiseキーワード、•Exception関数の呼び出しException関数に渡される文字列には、有用なエラー情報が含まれています.たとえば、インタラクティブ環境で次のコードを入力します.
try文とexcept文が例外を投げ出したraise文を上書きしていないと、プログラムがクラッシュし、例外のエラー情報が表示されます.通常、関数を呼び出すコードは、関数自体ではなく、例外をどのように処理するかを知っています.したがって、raise文は関数の中にあり、try文とexcept文は関数を呼び出すコードの中にあることがよく見られます.たとえば、新しいファイルエディタウィンドウを開き、次のコードを入力boxPrintとして保存します.py:
ここでは、文字、幅、高さを受け入れるboxPrint()関数を定義します.指定した幅と高さに従って、この文字で小さな箱の画像を作成します.この箱はスクリーンに印刷されます.この文字は1文字で、幅と高さは2より大きいと仮定します.if文を追加し,これらの条件が満たされなければ異常を投げ出す.後で、boxPrint()を異なるパラメータで呼び出すと、try/except文は無効なパラメータを処理します.このプログラムはexcept文のexcept Exception as err形式を使用しています.boxPrint()がExceptionオブジェクトを返すと、この文はerrという変数に保存されます.Exceptionオブジェクトはstr()に渡され、文字列に変換され、ユーザーに優しいエラー情報を得ることができます.boxPrintを実行します.py、出力は次のように見えます.
tryとexcept文を使用すると、プログラム全体をクラッシュさせるのではなく、エラーをより優雅に処理できます.
>>> raise Exception('This is the error message.')
Traceback (most recent call last):
File "", line 1, in
raise Exception('This is the error message.')
Exception: This is the error message.
try文とexcept文が例外を投げ出したraise文を上書きしていないと、プログラムがクラッシュし、例外のエラー情報が表示されます.通常、関数を呼び出すコードは、関数自体ではなく、例外をどのように処理するかを知っています.したがって、raise文は関数の中にあり、try文とexcept文は関数を呼び出すコードの中にあることがよく見られます.たとえば、新しいファイルエディタウィンドウを開き、次のコードを入力boxPrintとして保存します.py:
def boxPrint(symbol, width, height):
if len(symbol) != 1:
raise Exception('Symbol must be a single character string.')
if width <= 2:
raise Exception('Width must be greater than 2.')
if height <= 2:
raise Exception('Height must be greater than 2.')
print(symbol * width)
for i in range(height - 2):
print(symbol + (' ' * (width - 2)) + symbol)
print(symbol * width)
for sym, w, h in (('*', 4, 4), ('0', 20, 5), ('x', 1, 3), ('ZZ', 3, 3)):
try:
boxPrint(sym, w, h)
except Exception as err:
print('An exception happened: ' + str(err))
ここでは、文字、幅、高さを受け入れるboxPrint()関数を定義します.指定した幅と高さに従って、この文字で小さな箱の画像を作成します.この箱はスクリーンに印刷されます.この文字は1文字で、幅と高さは2より大きいと仮定します.if文を追加し,これらの条件が満たされなければ異常を投げ出す.後で、boxPrint()を異なるパラメータで呼び出すと、try/except文は無効なパラメータを処理します.このプログラムはexcept文のexcept Exception as err形式を使用しています.boxPrint()がExceptionオブジェクトを返すと、この文はerrという変数に保存されます.Exceptionオブジェクトはstr()に渡され、文字列に変換され、ユーザーに優しいエラー情報を得ることができます.boxPrintを実行します.py、出力は次のように見えます.
****
* *
* *
****
OOOOOOOOOOOOOOOOOOOO
O O
O O
O O
OOOOOOOOOOOOOOOOOOOO
An exception happened: Width must be greater than 2.
An exception happened: Symbol must be a single character string.
tryとexcept文を使用すると、プログラム全体をクラッシュさせるのではなく、エラーをより優雅に処理できます.