Бросок исключения

В C#, будет нумерующий страницы бросок кода e содержа дополнительную информацию стек вызовов?

...
catch(Exception e)
{
  e.Data.Add("Additional information","blah blah");
  throw;
}
11
задан Ben 16 March 2010 в 12:06
поделиться

4 ответа

Да, будет. Многие разработчики не понимают, что следующий код вызовет новое исключение из этой точки стека вызовов, а не из вызовов, сделанных ранее до catch.

...
catch(Exception e)
{
  e.Data.Add("Additional information","blah blah");
  throw e;
}

Я научился этому трудным путем!

12
ответ дан 3 December 2019 в 06:46
поделиться
        var answer = "No";
        try
        {
            try
            {
                throw new Exception();
            }
            catch (Exception e)
            {
                e.Data.Add("mykey", "myvalue");
                throw;
            }
        }
        catch (Exception e)
        {
            if((string)e.Data["mykey"] == "myvalue")
                answer = "Yes";
        }

        Console.WriteLine(answer);
        Console.ReadLine();     

Запустив код, вы обнаружите, что ответ положительный: -)

4
ответ дан 3 December 2019 в 06:46
поделиться

Исключения не являются неизменяемыми, и возможность добавлять к ним информацию - одна из причин этого.

Так что да, данные будут добавлены к всплывающей информации об исключениях.

1
ответ дан 3 December 2019 в 06:46
поделиться

Вы можете это сделать, но из-за FxCop я всегда создавал пользовательские исключения, когда я генерирую исключения. Это дает вызывающему абоненту возможность легко обнаруживать и понимать различные типы ошибок. Если вам нужно включить последующее исключение, вы можете использовать InnerException of Exception или просто добавить переменную-член для вашего нового исключения.

Здесь рассказывается, как добиться успеха в своей собственности. http://blog.gurock.com/articles/creating-custom-exceptions-in-dotnet/

Это один из те программные вещи, которые люди любят пропускать, потому что это просто лишняя работа, чтобы заставить приложение работать.

Это страница из моего личного Дзэн программирования:

Ваша программа - ваш дом. Сделайте его настолько красивым, насколько сможете, чтобы в нем было легко и весело жить.

1
ответ дан 3 December 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: