2017-08-30 13 views
0

の基本クラスを定義質問:は、カスタム例外

エラーを処理するための基本クラスを定義する必要は何ですか?

背景:私は、彼らがclass Error(Exception)定義された例に気づいたとき、私はUser-Defined Exception Handlingにドキュメントを読んた

。残りのクラスはすべてそのサブクラスです。

私はカスタム例外を定義していたときに、単にclass MyExc(Exception)と書いたことがあり、基本クラスを決して定義しませんでした。

特に、その例では、すべてが合格であるときにclass Error(Exception)を定義する必要性が理解できません。はい、彼らは特定のケースではただraise Errorでしたが、Exception vice Errorのサブクラスとして2つの例外を定義しているにすぎませんか?

+1

...それぞれを個別に捕まえるのではなく、 'Error'を捕まえることができるようになりました。 –

+0

@ IgnacioVazquez-Abramsなぜあなたは特に1つをキャッチしたくない場合は、それらを個別に定義するのですか? – datta

+0

時々あなたがしたい、ときどきしたくない。 –

答えて

0

ライブラリを書くときには、通常、すべての例外に対して基本例外クラスを定義します。そのため、ユーザーはすべてを同時に簡単に処理することができます。

MYLIB

class MyError(Exception): 
    pass 

いくつかの他のコード

try: 
    ... 
except MyError: 
    # MyLib error, handle it 

しかし、めったにこの "libの特定" の取り扱い正直であることを起こる(通常は、特定の例外または単にキャッチキャッチのいずれか全てexcept Exception:)。だから私はそれが重要ではないと思う。より多くのスタイルの問題。

+1

あなたが「例外」を捕まえているなら、それは間違ったことです(それがあなたの仕事でない限り、それはほとんどありません)。 –

+0

@ IgnacioVazquez-Abrams Lol、それはなぜですか?インターネットはそう言っているのですか? :D – freakish

+0

例外については何も教えてくれないし、あなたの責任ではない例外をキャッチしているので。 –