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, которое я обрабатываю и предпринимаю другие действия. Таким образом, хотя и возникает исключение, оно является ожидаемым поведением и обрабатывается кодом.
Если у вас есть уведомления об исключениях второго шанса, это означает, что ваш код на самом деле не обрабатывает выброшенное исключение. В этот момент вы бы хотели посмотреть, что происходит. Вы просто повторно вызываете исключение для кода более высокого уровня для захвата или вы полностью его игнорируете.