Chcę rzucić wyjątek, ale z niestandardowym komunikatem i pozostałym stosem śledzenia również. Przejrzałem różne wątki.Zgłasza wyjątek, ale kontynuuje śledzenie stosu.
catch (Exception ex)
{
throw; // Message is read only but stacktrace persist
throw ex; // Message is readonly and strack trace also blows .. worst!
throw new CustomException("My exception");// Message can be overridden but stacktrace lost
throw new CustomException("My message",ex);// same as above. However if this constructor in exception class calls same constructor of base class then .. see below
}
Kiedy ostatni appraoch jest używany (z konstruktora zwyczaj Wyjątek wywołujący konstruktor klasy bazowej), wyjście na ekran śmierci jest coś takiego:
**The remote server returned an error: (401) Unauthorized.**
[WebException: The remote server returned an error: (401) Unauthorized.]
original stack trace
[NewException: newMessage]
New Stack Trace
Dobrą rzeczą jest to wszystko jest tam na ekranie. Ale na górze chcę, aby mój wyjątek był wyświetlany, to znaczy "nowa wiadomość", a nie oryginalna wiadomość.
Stąd pogodzenie się z moim pytaniem: W JAKI SPOSÓB mogę wyświetlić na ekranie śmierci oryginalny ślad stosu, ale z niestandardowym komunikatem błędu?
Jest to serwis internetowy powrocie wyjątek? – Oded
W moim przykładzie jest to rzeczywiście połączenie z serwisem internetowym. Jednak nieistotne jest, że wyjątek mógł być podobny do DivisionByZero lub sqlException itp. Pomysł polega na poinformowaniu użytkownika o oryginalnym śladzie stosu, ale programista również dostosowuje domyślny komunikat wyjątku do bardziej pomocnego. – helloworld
Nie, nie jest bez znaczenia. Struktury Webservice mają własne pomysły na wyjątki. –