Как перехватить все необработанные исключения в сборке .net (тип библиотеки, а не приложение) - PullRequest
3 голосов
/ 14 апреля 2010

У меня есть сборка, содержащая несколько классов. Это сборка типов библиотеки классов, а не приложение форм Windows. Он также однопоточный.

Есть ли способ перехватить все необработанные исключения, чтобы я мог их регистрировать?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2010

По моему мнению, помещать такую ​​логику в библиотеку не очень хорошая идея. Я думаю, что приложение должно решить, как обращаться с исключениями (как обработанными, так и необработанными). Однако вы можете посмотреть на AppDomain.UnhandledException . Вы можете установить такой обработчик для CurrentDomain и сделать что-нибудь там. Однако, поступая таким образом, вы ограничиваете использование вашей библиотеки (например, подразумеваете, что библиотека будет использоваться только в одном домене). Кроме того, вы будете получать уведомления обо всех необработанных исключениях, даже совершенно не связанных с вашей сборкой.

Я думаю, что лучшая идея - позволить разработчикам, использующим вашу библиотеку, выполнять свою работу со всеми необработанными исключениями (возможно, с UnhandledException, установленным приложением).

2 голосов
/ 14 апреля 2010

Вы можете использовать событие AppDomain.UnhandledException, чтобы перехватывать необработанные исключения глобально:

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

Или используйте try / catch для каждого вызова ассемблера.

...