Verlassen Sie sich nicht auf automatisch generierte Ausnahmen über Dienstgrenzen hinweg! Verwenden Sie die @WebFault-Anmerkung, die Sie in Betracht gezogen haben. Wenn der Kunde jemals damit zu tun haben wird, ist das nichts Außergewöhnliches. Machen Sie es zum Bestandteil Ihres Datenvertrags (Fault Contract). Googeln Sie "SOAP Fault Element", es gibt Tutorials und andere Artikel, die erklären, wie und warum.
En normale Steuerung flow in the service should deal with fault situations... errors are not necessarily exceptional.
Wenn es um das Auslösen von Ausnahmen geht, sind hier einige tolle "Fast"-Regeln für Ausnahmen (Natürlich gibt es Ausnahmen von diesen Regeln):
Beinahe-Regel Nr. 1
Wenn Sie entscheiden, ob Sie eine Ausnahme auslösen sollten, geben Sie vor, dass die throw Anweisung den Computer 3 Mal piepsen lässt und 2 Sekunden lang schlafen. Wenn Sie unter diesen Umständen immer noch eine Umständen werfen wollen, nur zu.
Beinahe-Regel Nr. 2
Wenn Sie glauben, dass es so sein wird dass irgendjemand Ihre Ausnahme abfangen will, dann sollte es wahrscheinlich keine überhaupt keine Ausnahme sein.
Wenn Sie diese auf eine Dienstanforderung/einen Dienstaustausch anwenden, sehen Sie, dass es wirklich keinen Sinn macht, in Form von Ausnahmen zu denken, die zum Anrufer zurückkommen. Wenn der Anrufer jemals über ein Problem informiert wird, gibt es zu diesem Zeitpunkt nichts wirklich Außergewöhnliches an dem Problem, und es sollte durch den Dienstleistungsvertrag behandelt werden.
Selbst wenn Sie nur einen Fehlervertrag haben, der besagt, dass "die Anfrage aus einem unbekannten Grund fehlgeschlagen ist", kann der Kunde dies vorhersehen und es wird Teil des Vertrags. Wenn Sie bei Bedarf detaillierter werden wollen, könnte dies je nach Ihren Anforderungen hilfreich sein.
Denken Sie an die REST-Dienstarchitektur. Http gibt eine Handvoll vordefinierter Fehlercodes zurück. Es gibt gerade so viele verschiedene Fehlerkategorien, dass der Client für jeden Fehler eine geeignete Maßnahme ergreifen kann... aufgeben, weil die Ressource (Seite) dauerhaft verschwunden ist, umleiten, weil die Seite verschoben wurde, erneut versuchen, weil ein interner Serverfehler aufgetreten ist, mit dem Benutzer wegen der erforderlichen Berechtigungen sprechen usw. Als allgemeiner http-Client würden Sie nicht erwarten, dass interne Sprachausnahmen zurückkommen und Ihnen etwas sagen. Es gibt Dutzende von Sprachen und Tausende von potenziellen Ausnahmen in bestehenden http-Dienstimplementierungen. Deshalb sind sie auch nicht Teil des Vertrags.
Ich hoffe, das hilft Ihnen zu erklären, warum Ihre Fehler nicht außergewöhnlich sind und warum sie ausdrücklich Teil des Vertrags sein sollten.
Viel Glück.