У меня есть код, который перехватывает исключение, откатывает транзакцию, а затем повторно генерирует исключение.
catch ( Exception exSys ) {
bqBusinessQuery.RollBackTransaction();
throw exSys ;
}
Если я использую этот код, анализ VS Code выдает предупреждение:
Вместо этого используйте 'throw' без аргумента, чтобы сохранить место стека, в котором изначально было вызвано исключение.
Если я использую код
catch ( Exception exSys ) {
bqBusinessQuery.RollBackTransaction();
throw;
}
тогда я получаю предупреждение
Переменная exSys объявлена, но никогда не используется
Как мне решить эту проблему?
Изменить. Я пробовал этот метод, но он не работает. Класс system.exception требует дополнительного сообщения вместе с внутренним исключением. Если я это сделаю, он выдаст новое сообщение, переопределяющее сообщение из исходного исключения. Я не хочу получать новое исключение, я хочу выбросить то же исключение с тем же сообщением.
catch (System.Exception ex)
{
throw new System.Exception(ex);
}
Изменить
catch (System.Exception ex)
{
throw new System.Exception("Test",ex);
}
Пробовал этот способ. А затем вручную вызвал исключение с помощью throw new Exception("From inside");
. Теперь ex.Message возвращает «Test» вместо «From inside». Я хочу оставить это сообщение «Изнутри» как есть. Это предлагаемое изменение вызовет проблемы с отображением кода ошибки повсюду. : /
catch (Exception exSys) { throw;}
, чего OP хочет избежать. Итак, этот вопрос касается неиспользуемой переменной исключения, а не _2 _ / _ 3_. - person Tim Schmelter   schedule 11.05.2016throw
. Почему вы продолжаете пробовать другие методы? - person Martin Prikryl   schedule 11.05.2016logText += ex.Message
или аналогичная строка работать не будут. И на самом деле я нормально могу выбросить трассировку стека, если VS меня по этому поводу не беспокоит. - person jitendragarg   schedule 11.05.2016catch
! См. Мой отредактированный ответ. - person Martin Prikryl   schedule 11.05.2016