Оказывается, вы можете поймать это исключение.Подсказка, в которой я нуждался, исходила от этого вопроса:
C # - пользовательские настройки нарушены
В моем случае (приложение WinForms) обработчик исключений, который есть в моем родителе (форма автозапуска ловит это исключение.Но я полагаю, вы можете использовать обработчик MyApplication_UnhandledException
в ApplicationEvents
.Суть в том, что вам нужен какой-то высокоуровневый обработчик «необработанного исключения», чтобы перехватить это.
Кроме того, вы можете посмотреть на исключение InnerException и посмотреть, имеет ли оно тип System.Configuration.ConfigurationErrorsException
.Если это так, то вы можете просмотреть свойство .FileName
этого InnerException, чтобы получить полное имя файла user.config.
Как только вы это сделаете, вы можете что-то с этим сделать - попробуйте проверить его содержимое, чтобы увидеть, что с ним не так, или (в худшем случае) удалить его и перезапустить приложение, чтобы оно было создано заново со всеминастройки по умолчанию.
Как я уже говорил, это очень редкое исключение, вероятно, вызванное внезапным отключением системы или другими неконтролируемыми событиями (например, отключением питания).Тем не менее, приятно наконец иметь возможность сделать что-то с этим.