Например, в одном месте ...
//---------------a
try
{
// some network call
}
catch(WebException we)
{
throw new MyCustomException("some message ....", we);
}
... и в другом месте ...
//--------------b
try
{
// invoke code above
}
catch(MyCustomException we)
{
Debug.Writeline(we.stacktrace); // <----------------
}
Я печатаю трассировку стека, она начинается только от a до b, она не включает внутреннюю трассировку стека из WebException.
Как мне распечатать всю трассировку стека ???
c#
exception-handling
stack-trace
Джоджо
источник
источник
throw;
вместо,throw new MyCustomException(...)
если вы хотите сохранить (и вывести) исходный стек исключений.Ответы:
Я обычно использую метод .ToString () для исключений, чтобы представить полную информацию об исключении (включая внутреннюю трассировку стека) в тексте:
Пример вывода:
источник
ToString
метод и печатают пользовательские сообщения вместо полной информации (это плохая практика кодирования, поэтому никогда не делайте этого)ToString
всякий раз, когда уверен, что он не перезаписан, а в противном случае использую свойства напрямую (например , ответ Эндрю Хейра ).Используйте такую функцию:
Тогда вы можете назвать это так:
источник
ToString
?1. Создать метод: если вы передадите свое исключение следующей функции, она предоставит вам все методы и сведения, которые являются причинами исключения.
2. Метод вызова: метод можно вызвать следующим образом.
3. Получите результат:
источник
StringBuilder
class.