Невозможно сгенерировать исключение: очень простое приложение Windows Form C # и app.config - PullRequest
1 голос
/ 10 апреля 2011

Я новичок в C # (VS 2010) и пытаюсь понять, как обрабатывать исключения. За исключением очень простой программы, которую я написал, я не могу ее сгенерировать.

Вот код C #:

        private void button1_Click(object sender, EventArgs e)
        {
            String messageOut = System.Configuration.ConfigurationSettings.AppSettings["tester"];
            MessageBox.Show(messageOut);
        }

А вот app.config, который я создал в качестве теста

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="buttonText" value="message from ray"/>
  </appSettings>
</configuration>

Как видите, в app.config нет ключа для "tester", и я бы ожидал исключения. Однако, что происходит, я просто получаю пустое окно сообщения.

Обновление:

Спасибо за ответ, Хоксби. Я думаю, что часть 2 для меня это понять, попытаться поймать. Будет ли это работать здесь?

   MessageBox.Show(System.Configuration.ConfigurationSettings.AppSettings["text"].ToString());

   try
   {
      String tester = System.Configuration.ConfigurationSettings.AppSettings["text"].ToString();
      tester = null;

   }
   catch
   {
       MessageBox.Show("Missing key!");
   }

1 Ответ

4 голосов
/ 10 апреля 2011

Если вы запрашиваете элемент конфигурации, который не существует, он возвращает пустую строку. Например, если вы попытаетесь вызвать .ToString() для переменной messageOut, это вызовет единицу, потому что вы не можете вызвать ToString() для нулевого объекта.

Если вы просто хотите, чтобы ваше приложение выдало исключение

throw new Exception("Something broke");
...