Необработанное исключение типа 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 отправит исключение в поток, где оно будет громко проваливаться, а не глотать / скрывать его.

Другие вопросы по тегам