Во-первых: я думаю, что лучше всего ловить исключения в коде, который я могу обработать в настоящее время. Если я не могу справиться, просто позволь ему продвинуться на более высокий уровень.
Второе: существует возможность отловить исключения во всем мире:
public static void RegisterExceptionHandler()
{
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler (Application_UIThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
В этих методах обработки исключений перехвачены все исключения, которые не были обработаны. Здесь вы можете уведомить пользователя о том, что произошло нечто «неожиданное».