Wir alle wissen, dass wir die Ausnahme Wrapping verwenden können (und fangen Sie es später wo erforderlich). Was ich jedoch (und elegant) implementieren möchte, ist die Unterscheidung der Fehlerarten nach dem Aufruf des Stored Proc.Fehlerbehandlung Flexibilität
Ich habe p_error
Feld, wo gespeicherte Proc seine Fehler ablegt. Es könnte ein Validierungsfehler sein (wo eine Validierung gegen die DB nicht vermieden werden kann), oder ein Autorisierungsfehler (wir machen das an 2 Stellen, von denen eine DB ist) oder ein SQL-Fehler.
Kurz gesagt brauche ich einen hübschen und eleganten Mechanismus, um zwischen dem Fehlertyp zu unterscheiden, bevor eine Ausnahme ausgelöst wird.
Zwei Ansätze, die ich gedacht:
Auf der Datenbankebene haben 3 Fehlerfelder: 1 für die Zulassung 1 für SQL-Fehler und 1 für alle anderen Fehler. Das könnte haarig werden.
Erstellen eines Fehlers struct (enum?), In dem Fehlermeldungen gespeichert und später verglichen werden können. Wiederum zu wortwörtlich. Was passiert, wenn sich eine Fehlermeldung in db ändert ... zu schwer zu warten.
Irgendwelche anderen Ideen?
Danke. Ich werde klarer sein. Es gibt zwei Arten von Fehlern: auf Anwendungsebene gefangen und in der Datenbank gefangen. Wir verwenden keine OracleException. eigentlich bin ich verpflichtet, eine Wrapper-Klasse zu verwenden, die sich mit Oracle beschäftigt, sie wirft ihre eigenen Ausnahmen, die ich erwische. – sarsnake
Aber Ihre Idee ist grundsätzlich Fehlercodes zur Unterscheidung der Fehlerarten zu verwenden. Frage: Sind diese benutzerdefinierten Codes? – sarsnake
Abfangen von Fehlern in der Datenbank Ich (und viele andere) betrachten sehr schlechte Form. Ich nehme an, dass du zurück in die SP rollst? Dies sollte in der Verantwortung der anrufenden Anwendung liegen. Wenn ich dies tue, werfe ich immer die Ausnahme zurück. Sie können immer noch meinen Ansatz machen, wenn Sie den Fehlercode –