Собственно, вопрос кто как реализует глобальный перехват исключений.
Для Win-приложений есть 2 варианта (нечто подобное и для Web):
1. Прямо в функции Main установить обработчик: Application.ThreadException += applicationThreadException;
2. Во всех обработчиках события (нажатие на кнопку и пр.), где может возникнуть исключение.