2009-03-01 8 views
0

Ist es akzeptabel oder sinnvoll, Ausnahmen zu verwenden, um mit benutzergenerierten Fehlern umzugehen? Wie ...Situationen für die Verwendung von Ausnahmen, sollte Benutzer in der Lage sein, Ausnahmen auszulösen?

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

oder sind Ausnahmen nur für schwerwiegendere Fehler reserviert (wie Datei nicht gefunden, Division durch Null)?

Antwort

6

Schlechte Benutzereingabe ist nie eine Ausnahme. Es ist die Norm!

Ernsthaft aber. Ausnahmen sind für außergewöhnliche Umstände und schlechte/falsche Daten von einer externen Quelle sind normalerweise keine Ausnahme.

0

Ich denke, dass die 'InsufficentCreditException' ist ein guter Grund zu werfen, wenn ich Ihren Anwendungsfall oben verstehe. Der gesamte positive Fluss des Programms kann dazu dienen, von oben nach unten zu arbeiten, jede "Ausnahme" zum positiven ist ein Fehler und daher eine Ausnahme.

Mitch sagt, "schlechte Benutzereingaben sind nie eine Ausnahme" und "schlechte/falsche Daten von einer externen Quelle ist normalerweise keine Ausnahme", aber wenn Sie unter "Programm nach Vertrag" sind, ist genau das der Fall . Welchen besseren Grund hätte es, eine Ausnahme auszulösen als ungültige Daten von einer externen Quelle?

Eine letzte Anmerkung, Ihre Frage und Ihr Anwendungsfall stimmen nicht überein. Unzureichende Gutschrift wird normalerweise nicht durch vom Benutzer generierte Fehler verursacht. Ein klarer Fall von Ursache/Wirkung würde dies leichter zu beantworten machen.

Verwandte Themen