Я сомневаюсь, что было бы полезно иметь общее место для регистрации ошибок.
Чего вы хотите добиться - сокращение кода?
Изображение исключения, называемого InvalidFileFormatException, которое может возникнуть в вашем приложении, когда вы пытаетесь открыть файл, формат которого не соответствует ожидаемому. Глобальный обработчик исключений может записать это. Ваш лог-файл будет выглядеть примерно так:
[Yesterday...] The file format is invalid: InvalidFileFormatException. StackTrace: ...
Но что вы получаете от этой информации? Хорошо, я признаю, что если во всем приложении есть только один вызов, который может привести к созданию этого исключения, то все в порядке. Но что, если есть несколько вызовов одного и того же метода или если другие вызванные методы выдают одно и то же исключение?
Вы должны полагаться на подробное сообщение об Исключении, но, к сожалению, если речь идет об Исключениях, генерируемых Средой выполнения, вы не можете влиять на сообщения. Разве не было бы лучше иметь что-то вроде
string fileName = @"C:\Users\stackoverflow\Documents\file.frk";
try
{
FreakingObject fo = freakingObjectConverter.ReadFromFile(fileName, FreakFormat.AutoDetect);
}
catch (InvalidFileFormatException iffe)
{
MyLogger.LogError("File " + fileName + " had an invalid format:", iffe);
}
В примере вы по крайней мере получаете информацию о неверно отформатированном файле. Вы можете легко создавать более сложные примеры (HttpRequest и т. Д.), Где вы можете добавить очень полезную информацию в свой журнал, если только вы знали о контексте, в котором было создано исключение.
Небольшая подсказка при попытках улова вокруг Application.Run(...)
: имейте в виду, что всякий раз, когда вы достигаете блока catch, ваше приложение будет закрываться, если вы не возродите основную форму или не сделаете что-либо еще.