Zakładam, że używasz WCF, ponieważ twoje pytanie jest z nim oznaczone. Dobrą praktyką w obsłudze wyjątków w WFC nie jest dopuszczanie wyjątków do przepychania się przez przewód do konsumenta, ale zamiast tego rzucanie znaczących Wyników błędów.
Powinieneś zawsze spróbować ... catch block w twojej operacji, jeśli jest jakaś szansa, że może być przez niego wygenerowany wyjątek. Jeśli zezwolisz na bańkę wstępną, mogą powstać tylko dwa scenariusze: Jeśli skonfigurowałeś swoją usługę, aby zezwalać na wyjątki w błędach, ujawnisz wewnętrzne usługi otwierania się dla bezpieczeństwa. Lub nie masz tego skonfigurowanego w swojej usłudze, a konsument otrzymuje bardzo ogólny komunikat, który wskazuje, że coś poszło nie tak, co nie jest bardzo przydatne dla nich lub zespołu wsparcia.
Należy zadeklarować jeden lub więcej Wyrażeń FaultExceptions, w zależności od tego, jakie wiadomości mają być odbierane przez użytkownika z Twojej operacji, udekoruj je jako FaultContracts w deklaracji operacji. Następnie możesz spróbować ... uchwycić określone wyjątki i rzucić określone Usterki. Możesz także spróbować ... złapać wyjątek odłowu i rzucić bardzo ogólny błąd.
Kluczem tutaj nie jest ujawnianie zbyt dużej ilości informacji o tym, co dzieje się z Twoją operacją wewnętrznie - szczególnie ślady stosu!
Usterka jest tylko kolejną umową dotyczącą danych, dlatego jest deklarowana w pliku WSDL. Oznacza to, że konsument może wykryć usterkę w sposób szczególny i może reagować na usterki generowane przez operację, tak jakby był to wyjątek wyrzucony z ich kodu.
Mam nadzieję, że to pomoże.
Joe.