カスタム例外を発生させることができるいくつかのメソッドがあります。例外が発生した後、それを処理する必要があります。たとえば、メッセージをコンソールに記録してデータベースに保存します。
投稿のタイトルに記載されているクレイジーな回避策について考えていました-ロギングとDB保存を使用してそのカスタムコードを__init__
カスタム例外のメソッドに移動できるため、例外が発生するたびに、必要なものはすべて例外の初期化時に行われます。
__init__
例外自体が別の例外を発生させる可能性があることは承知していますが、それも処理できます:)
誰かがそれを試しましたか?
そして、なぜそれはクレイジーな考えですか?:)
-
編集:
私はそれがちょっとクレイジーであることを知っています、私はあなたの意見に興味があります. 私が達成したいことを囲みます:
私はリモートデータを扱っており、ネットワークを介して他のサーバーと通信しているときに、いくつかの問題が発生する可能性があります。2. HTTP エラー (404、500 など) - 接続後。3. リモート サーバーが他のエラーを返すこともあります
これらの問題はいくつかの異なる場所で発生するため、カスタム例外を作成しました。
class CustomException(Exception):
pass
そして、私がそれらを捕まえることができるとき、どこでもそれを上げます、例えば:
try:
conn.open(url)
except HTTPException as e:
raise CustomException('http')
それは単なる疑似例です。
この CustomException はどこか高くキャッチされ、ほぼすべての場所でこれを同じ方法で処理します。
try:
place.populate()
except CustomException as e:
handle_exception(e)
return False
また、問題に関する情報をデータベースに保存し、のオブジェクトの状態やアクセス日をhandle_exception
保存するなどの他のことも行いますが、常に同じことを更新します。place
handle_exception
そのため、例外が発生するたびにコードが実行されるため、そのコードを内部__init__
に配置するのは本当にクレイジーなアイデアになるのではないかと思っていました。
ご意見ありがとうございます!