2017-07-25 9 views
2

ユーザーのカスタムメッセージと共に問題に応じて発生する例外セットが定義されています。例外タイプの検出

これらのカスタム例外を使用してエラー処理の仕組みを開発し、より高いレベルのログクラスに泡立たせ、最終的にはユーザーにフィードバックして、フィードバックを提供して修正するものを教えてもらいたいと思います。それはバックエンドシステムが捨てられることさえあるかもしれないので、後で少し戻ってくることを知っているだろう。

ただし、手動で作成された例外の1つではなく、システム例外(これらは発生していますがカスタム例外でラップされています)の場合は、一般的なエラーを返します。

例外を処理するときに、それが私のものかどうかを検出する良い方法は何ですか?

私はカスタム属性を持つベースのものの下にすべての例外をサブクラス化し、例外のバブルを起こしたときにそれをチェックすることを考えていましたが、ハックのようです。

ありがとうございます。

答えて

4

すべての例外を1つのタイプから派生させることができます。多くの主要なPythonライブラリがこれを行います。

ここで、共有ベースクラスからBをどのように派生させたかを見てください。

class A(Exception): 
    pass 

class B(A): 
    pass 

それが動作するかどうか見てみましょう:

>>> try: 
>>>  raise B 
>>> except A: 
>>>  print("Caught") 
>>>  
Caught 

そして、それは関係のない例外をキャッチしないこと?

ワンダフル。

継承は、あなたが定義している単一の基本例外からサブクラス化するだけで、この例外を明示的にキャッチしてログに記録して再試行できます。あなたのライブラリにない場合、エラーは捕捉されません。

+1

ニース、まさに私が探していたものです。私は例外が親クラスをチェックすることを認識していませんでした。 – browskie

関連する問題