Необработанное исключение типа System.Exception произошло в FM.dll
Я использую WebSync в приложении.NET, где клиент совершает звонки для подключения, подписки и т. Д. К WebSync. Где-то во время выполнения кода (это большое приложение) я получаю всплывающее окно серого цвета с сообщением об ошибке выше. Поскольку это большое приложение, как я могу найти, где в приложении это происходит? Проблема в том, что это приложение имеет много потоков.
Означает ли это сообщение, что есть проблема в FM.dll (WebSync), или это означает, что мне не хватает чего-то в моем коде, который должен перехватить это исключение. Если последнее, как я могу найти, где в моем коде это может произойти?
Спасибо!
Вот стек вызовов для моей ошибки. Как я могу сказать, если это ошибка с моей стороны или проблема внутри FM.dll (WebSync)?
FM.dll! FM.AsyncException.AsyncThrow.AnonymousMethod__0 (объект не используется) + 0x47 байт
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executeContext, System.Threading.ContextCallback обратный вызов, состояние объекта, bool preserveSyncCtx) + 0x285 байтов mscorlib.dll! System.Threading.ExecutionContext.ExecutionContext executeContext, System.Threading.ContextCallback обратный вызов, состояние объекта, bool preserveSyncCtx) + 0x9 байт.
mscorlib.dll!System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() + 0x6f байт mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch() + 0x1etes by
[Родной для управляемого перехода]
[Appdomain Transition]
[Родной для управляемого перехода]
2 ответа
Если у вас включена функция "Разбить все исключения", то после запуска отладчика, когда выдается исключение, вы сможете просматривать трассировку стека и перемещаться по ней. Это должно дать вам представление о пути, по которому код ведет к исключению. Вы также можете запросить исключение, чтобы проверить, InnerException
свойство было установлено. По этой информации вы сможете определить причину проблемы. Если нет, опубликуйте более подробную информацию о собранной вами информации, и вы сможете получить дополнительную помощь.
Инструкция по настройке Visual Studio на все исключения: http://msdn.microsoft.com/en-us/library/d14azbfh.aspx
В FM-библиотеках AsyncException.AsyncThrow
используется, когда исключение генерируется в асинхронном обратном вызове. Попробуйте обернуть свой код обратного вызова FM в блоки try/catch, чтобы перехватить исключения, например:
client.Connect(new ConnectArgs
{
OnSuccess = (e) =>
{
try
{
// your code
}
catch (Exception ex)
{
// handle exception
}
}
});
Если вы не заключите свой код обратного вызова в блок try/catch, то библиотека FM отправит исключение в поток, где оно будет громко проваливаться, а не глотать / скрывать его.