Я столкнулся с интересной проблемой при работе с кодом J #.
Предположим, что выбрасываемое исключение имеет тип FreakyException
. Теперь FreakyException
наследуется от FreakyExceptionBase
класса, который, в свою очередь, наследуется от Exception
класса. Хитрость в том, что каждый из них определен в своих сборках. Скажем, FreakyExceptionBase
находится в ExceptionBases.dll
, но сам FreakyException
находится в Worker.dll
. Ваша заявка ссылается только на Worker.dll
, но НЕ на ExceptionBases.dll
.
В этом случае ваш catch(Exception)
не поймает FreakyException
, потому что .NET не сможет определить цепочку наследования, которая указывает, что FreakyException
на самом деле наследует форму Exception
.
Это произошло с кодом J #, потому что исключения J # наследуются от java.lang.exception
, и мой проект не ссылался на библиотеки J #. Когда на J # ссылались, проблема ушла.
Возможно, это то же самое с вашим приложением?