.NET Exception Handling Lookup aus einer Tabelle

Mein Manager entwarf einen Tisch genau so

[exception]
PK | Außergewöhnlich
ExceptionCode varchar (100)
ExceptionDesc varchar (255)
ExceptionMSG varchar (255)

Ich verwende ASP.NET Webforms und verwende gespeicherte Prozeduren / ADO.NET für DataAccess. Jetzt will er nicht, dass ich harte Code-validation in gespeicherten Prozeduren noch im Code hinter, aber um die Einschränkung exceptionmeldung zu fangen und schaue die gleiche Fehlermeldung in der database und suchen Sie nach der Nachricht, die wir zeigen wollen. Ich frage mich, ob sein Entwurf funktioniert oder sollte ich ihm erklären, dass hier etwas nicht stimmt.

Was denkst du Jungs?

Als solches gibt es nichts falsch in Ansatz – tatsächliche Fehlermeldung Strings werden in einigen memory statt hart-Codierung gespeichert werden. Die Auswahl hier ist eine database. Der Ansatz sollte funktionieren, außer ich würde vorschlagen, einige Dinge:

  1. Fehlermeldungen sollten zwischengespeichert werden – ich bevorzuge das caching aller Nachrichten im App-Start anstelle des On-Demand-Cachings.
  2. Möglicherweise müssen Sie einige Nachrichten festlegen, die mit der App-Inbetriebnahme umgehen (z. B. ungültige databaseverbindungszeichenfolge usw.)
  3. Im Allgemeinen sollte die exception den Nachrichtenstring mit einer Fassade wie einem IMessageProvider nachschlagen. In Ihrem Fall würde die IMessageProvider-Implementierung einen Cache (dictionary) verwenden, der bei App-Start von der database gefüllt wurde. Sie können diese Implementierung mit etwas anderem einfach austauschen (evtl. Laden von Ressourcendateien usw.). Sie können die Verwendung von IOC / Dependency Injection in Betracht ziehen, um die Implementierung eines Message-Providers mit exceptionobjekten zu versorgen.
  4. Eine typische Message-Lookup-Implementierung sollte einen errorssicheren Mechanismus haben – zum Beispiel, wenn der Fehlercode nicht existiert, dann könnte es einen hartcodierten String wie zB "Irgendein Fehler (Code: xxxx) aufgetreten, wenden Sie sich bitte an Ihren Administrator" . Idealerweise wird der Benutzer nicht erwartet, diese Nachricht in einem Live-System zu sehen.

Meiner Meinung nach scheint es ein wenig albern, um Aussage Nachrichten in einer database zu betrachten, wenn man bedenkt, ob die exception database-Verbindung verwandt ist, würden Sie nicht wirklich in der Lage, eine Nachricht haha ​​nachschlagen. Es wäre viel sinnvoller für mich, vielleicht eine configurationsdatei (als Ressource) auf dem Webserver zu haben, die geändert werden könnte, stattdessen dann die Mühe, eine Verbindung zu einer database herzustellen. In all den ASP-Seiten, die ich je gemacht habe, aber die Entwickler sorgen dafür, dass sie in den exceptionn, die sie casting, sinnvolle Meldungen machen, vor allem für die validation.

Ich sehe den Wunsch nach veränderlichen Botschaften; aber ich denke, eine database könnte ein wenig übertrieben sein. Ich könnte aber falsch sein … ich kann einfach nicht auf eine Situation gestoßen haben, für die es am meisten Sinn macht. Allerdings, wenn Ihr Manager absolut darauf beharrt, dann nehme ich an, Sie müssten es funktionieren. Ich denke, nur müde von dem Fall, wo eine exception ist Verbindung verwandt. Ich hoffe das war hilfreich.