PHPのhttp://php.net/set_error_handlerのように、Pythonでカスタムエラーハンドラを登録することは可能ですか?コードのどこからでもエラーをトリガーし、それに関する電子メール通知(およびロギング、およびハンドラーに実装する必要のあるその他のもの)を受け取りたい-PHPでそのようなパターンを使用しました。
多分私はPythonの概念をよく理解していません(私はPythonの初心者なので)。手伝ってくれてありがとう。
PHPのhttp://php.net/set_error_handlerのように、Pythonでカスタムエラーハンドラを登録することは可能ですか?コードのどこからでもエラーをトリガーし、それに関する電子メール通知(およびロギング、およびハンドラーに実装する必要のあるその他のもの)を受け取りたい-PHPでそのようなパターンを使用しました。
多分私はPythonの概念をよく理解していません(私はPythonの初心者なので)。手伝ってくれてありがとう。
PHPのエラーハンドラーが正確にわからないので、Pythonの観点からこれを見ていきます
Pythonには例外があり、名前では例外的です。何かがうまくいかないとき、何か他のことを期待しているとき、あるいは単に失敗したいときでさえ、例外をスローします。例外はいつでもスローでき、後でキャッチすることができます。
a = 'int'
b = int(a)
'int'をintに変換できないため、例外がスローされます。例外処理を使用してこれを実行します。
try:
b = int("int")
except ValueError:
print "can't do that"
これで、例外を飲み込んでプログラムの実行を続行することに気付きました。これが常に最良のアイデアであるとは限りません。場合によっては、独自の例外を発生させてクラッシュすることもあります。
class NotADecimalNumber(Exception): pass
try:
b = int("a")
except ValueError:
raise NotADecimalNumber("'a' is not a decimal number idiot.")
これで、カスタムメッセージを含むカスタム例外が発生します