C# Исключение WinForms: первое случайное исключение типа 'System.AccessViolationException'

У меня есть базовое приложение WinForms. Я звоню во внешний API, который генерирует следующее исключение:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

A first chance exception of type 'System.AccessViolationException' occurred in UavController.exe

Звонок выглядит так:

outputBroker.SelectedObjectPaths.AddWithID(((AgAircraft)aircraft).Path, ((AgAircraft)aircraft).InstanceName);

Я не могу найти никаких признаков проблемы.

2 ответа

Решение

Проблема связана с вашим API. Либо вы передаете неверные данные в API через ваш вызов, либо ваш API имеет проблему самостоятельно. Вот ссылка Microsoft, которая может помочь вам, если у вас есть доступ к коду вашего API:

http://msdn.microsoft.com/en-us/library/ms164911(v=vs.80).aspx

В противном случае, я думаю, что вам, возможно, придется поработать с вашим провайдером API, чтобы выяснить, в чем проблема и как ее решить.

Исключение из первого шанса не всегда является ошибкой. Первое случайное исключение - это первый раз, когда исключение было вызвано кодом, который вы отлаживаете. Если ваш код обрабатывает исключение, то все, что нужно сделать, это уведомить вас о том, что произошло исключение.

Например, у меня может быть код, который пытается найти файл с определенным именем и, если найден, выполняет определенные действия. Если имя файла не существует, исключение - throw, которое я обрабатываю и предпринимаю другие действия. Таким образом, хотя и возникает исключение, оно является ожидаемым поведением и обрабатывается кодом.

Если у вас есть уведомления об исключениях второго шанса, это означает, что ваш код на самом деле не обрабатывает выброшенное исключение. В этот момент вы бы хотели посмотреть, что происходит. Вы просто повторно вызываете исключение для кода более высокого уровня для захвата или вы полностью его игнорируете.

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