Это один из моих любимых вопросов для интервью — меня часто удивляет количество кандидатов, которые ошибаются. Посмотрим, как у тебя дела.
В чем разница между следующими фрагментами кода?
try
{
DoSomething();
}
catch (SomeException ex)
{
throw ex;
}
try
{
DoSomething();
}
catch (SomeException ex)
{
throw;
}
Ответ заключается в том, что первый фрагмент уничтожает трассировку стека для исключения, в то время как второй фрагмент сохраняет его нетронутым. Это может быть настоящей болью при попытке отследить конкретную проблему — в этом случае файлы журнала будут указывать на строку кода, в которой вы повторно генерируете исключение, а не на строку, где происходит исходное исключение. Поэтому всегда используйте второй фрагмент кода.
Удачного кодирования.
Свежие комментарии