2009-03-01 20 views
0

ユーザが生成したエラーに対処するために例外を使用することは許容可能か、賢明ですか?このような...例外をトリガできる状況で、例外を使用する状況はありますか?

try 
    { 
     $job->authorise($user); 
    } 
    catch (InsufficentCreditException $e) 
    { 
     return E_INSUFFICIENT_CREDIT; 
    } 
    catch (PermissionDeniedException $e) 
    { 
     return E_PERMISSION_DENIED; 
    } 

例外は、より重大なエラー(ファイルが見つからない、ゼロ除算など)のために予約されていますか?

答えて

6

不正なユーザー入力は例外ではありません。それは規範です!

真剣に。例外は例外的な状況であり、外部ソースからの不良/間違ったデータは通常例外ではありません。

0

上記のユースケースを理解していれば、「InsufficentCreditException」がスローするのが良い理由だと思います。プログラムの肯定的な流れはすべて、トップダウンで処理することができます。正のすべての「例外」は失敗であり、したがって例外です。

「悪いユーザー入力は決して例外ではありません」と「外部ソースからの悪い/間違ったデータは通常例外ではありません」と述べていますが、「契約によるプログラム」の下にいる場合は、 。外部ソースから受け取った無効なデータよりも例外をスローするのに良い理由は何でしょうか?

あなたの質問とあなたのユースケースは一致しません。不十分なクレジットは、通常、ユーザが生成したエラーによって引き起こされるものではありません。原因と結果の明確なケースでは、これを簡単に答えることができます。

関連する問題