例外キャッチ:
try:
XXXXX1
raise Exception(“xxxxx2”)
except (Exception1,Exception2,……):
xxxx3
else:
xxxxx4
finally:
xxxxxxx5
上記のように、raiseステートメントでエラーメッセージをカスタマイズできます。
例外がスローされたため、レイズ後のステートメントは実行されません。制御フローは例外キャプチャモジュールにジャンプします。
例外ステートメントの後に、1つの例外の後に複数の例外を続けることができます。または、複数のステートメントを使用して、複数の例外をキャッチし、それらを異なる方法で処理することができます。
例外ステートメントによってキャッチされた例外が発生しない場合、例外ステートメントのステートメントブロックは実行されません。しかし、elseでステートメントを実行します
上記のステートメントでは、try / exception / else / finallyの順序はtry-except X-except-else-finallyである必要があります。つまり、elseを除くすべてがelseとfinallyの前にある必要があり、else(存在する場合)はfinallyの前にある必要があります。 、およびXを除いて、を除いて前にする必要があります。そうしないと、構文エラーが発生します。
elseとfinallyはどちらもオプションです。
上記の完全なステートメントでは、elseステートメントの存在はexcept Xまたはexceptステートメントに基づいている必要があります。elseステートメントがexceptステートメントなしでtryブロックで使用されると、構文エラーが発生します。
異常なパラメータ出力:
try:testRaise()
except PreconditionsException as e: #python3の文言はasprintを使用する必要があります(e)
カスタム例外の場合、親クラスExceptionを継承するように例外クラスをカスタマイズするだけで済みます。カスタム例外クラスで、親クラスのinitメソッドをオーバーライドします。
classDatabaseException(Exception):
def __init__(self,err='データベースエラー'):
Exception.__init__(self,err)classPreconditionsException(DatabaseException):
def __init__(self,err='PreconditionsErr'):
DatabaseException.__init__(self,err)
def testRaise():
raise PreconditionsException()try:testRaise()
except PreconditionsException as e:print(e)
注:PreconditonsExceptionはDatabaseExceptionのサブクラスです。
したがって、PreconditionExceptionを発生させると、両方の例外クラスをキャッチできます。
ただし、raise DatabaseExceptionの場合、PreconditonsExceptionをキャッチできません。
補足例:
Pythonカスタム例外キャプチャ例外処理例外
def set_inf(name,age):if not 0< age <120:
raise ValueError('範囲外')else:print('%s is %s years old'%(name,age))
def set_inf2(name,age):
assert 0< age <120,'範囲外'print('%s is %s years old'%(name,age))if __name__ =='__main__':try:set_inf('bob',200)
except ValueError as e:print('無効な値:',e)set_inf2('bob',200)
これで、pythonカスタムがエラーをキャプチャする方法に関するこの記事は終わりです。より関連性の高いpythonカスタムエラーキャプチャ方法については、ZaLou.Cnを検索してください。
Recommended Posts