.net: нюанс Stack Trace для re-thrown-исключений
- Алик Ким
- 28 дек. 2024 г.
- 1 мин. чтения

Обнаружил такой нюанс StackTrace для исключений:
если исключение поймать, а потом прокинуть дальше -
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
throw;
}
то в .net core дальше это исключение будет вести себя так же, как если бы его вообще не ловили.
а в .Net Framework его свойство StackTrace для уровня, на котором исключение было поймано и прошено дальше, будет содержать номер линии этого "throw;", а не номер линии, откуда это исключение вылетело:
try
{
f15(); // <--- не вот этой
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
throw; // <--- а вот этой
}
можно сделать 2 вывода:
1) раньше было хуже: при расследовании исключений по логам информация немного скрадывалась. теперь все идеально
2) может, мне какое нибудь интересное хобби завести 🤔
Comments