Исключение не было обработано - исключение повторного вызова - PullRequest
2 голосов
/ 21 июля 2011

Я пытаюсь выбросить исключение, но оно не работает. Я получаю ошибку «Исключение было необработанным» в визуальной студии.

public KeyValueConfigurationCollection getMyAppSetting()
{
  Configuration config;
  ConfigurationFileMap configFile;
  try
  {
    configFile = new ConfigurationFileMap(ConfigurationManager.OpenMachineConfiguration().FilePath);
    config = ConfigurationManager.OpenMappedMachineConfiguration(configFile);
    AppSettingsSection MyAppSettingSection = (AppSettingsSection)config.GetSection("xxx/appSettings");
    MyAppSettingSection.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToRoamingUser;
    return MyAppSettingSection.Settings;
  }
  catch (Exception ex)
  {
    logger.Fatal("...");
    throw;
  }
}

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

Спасибо.

Ответы [ 2 ]

8 голосов
/ 21 июля 2011

Работает как положено.

Вы перехватываете и затем отбрасываете исключение - теперь вы не обрабатываете выброшенное исключение. Вот почему вы получаете ошибку.

0 голосов
/ 21 июля 2011

Смысл перехвата, выполнения некоторых обработок, а затем выдачи исключения, состоит в том, чтобы сделать его доступным для перехвата с помощью некоторого оператора catch где-то выше вашего кода в стеке. Если исключение нигде не перехватывается, оно поднимется до уровня CLR и остановит процесс.

Если вы хотите перехватить исключение, обработайте его, а затем продолжайте, все просто: просто не бросайте его обратно в операторе catch.

...