Может ли необработанное исключение в приложении C# вызвать синий экран смерти?Необработанные исключения C#
ответ
Если вы не имеете дело с неуправляемыми ресурсами, такими как доступ к необработанной памяти. (В этом случае исключение вряд ли является причиной)
. NET Исключения будут зависеть от среды выполнения. Вы можете сбой своей ПРОГРАММЫ, но не ОС.
В моем опыте единственными вещами, которые вызывают BSOD, являются плохие драйверы и аппаратные ошибки. (Это, конечно, не обширный список причин BSOD, но это первое, что я смотрю.)
Неуправляемые ресурсы не могут вызвать BSOD. –
@ Stephen Cleary: Я уверен, что вызов неуправляемого кода, который ссылается на неисправный драйвер, может вызвать BSOD, дело в том, что в контексте .NET (Where Is Exceptions live) вы не будете вызывать BSOD. Как только вы покидаете управляемый код, никаких гарантий нет. – Aren
@Aren: Что вы имеете в виду, «вызов неуправляемого кода, который ссылается на неисправный драйвер, может вызвать BSOD». Не могли бы вы рассказать? –
Нет; в идеале, должно быть никак не, чтобы вызвать BSOD с C#.
Покажите нам код, вызывающий его, и мы увидим, можем ли мы помочь.
Нет, это не так. Это не означает, что вы не могли бы потенциально вызвать BSOD с помощью программы на C#, но если бы вы это сделали, это было бы связано с тем, что не было обработано необработанное исключение.
Единственными причинами для BSOD являются аппаратная ошибка, ошибка ОС или ошибка драйвера. Код .NET никогда не может вызвать BSOD.
Да, файл драйвера (ser2pl.sys), который был установлен для конвертера USB-RS232, специально вызван как проблема на BSOD. Я пробовал несколько разных вещей, но (коротко расскажите) BSOD происходит только на более старых системах (той же ОС: WinXP SP3), оснащенной устаревшим корневым центром USB 1.1. Однако другие применения C# с использованием одного и того же преобразователя не приводят к сбою. Изменение скорости передачи данных и конфигурации порта драйвера, по-видимому, не имеет значения. –
Я предполагаю, что это результат WinDbg 'analysis -v', который имеет правильный анализ не менее 95% времени, я бы сказал. Практически единственное, что вы можете сделать, это обновить драйверы (или проинструктировать своих клиентов, если это клиентские машины). –
Спасибо. Что такое WinDbg? Является ли эта часть C# или она используется для сообщения об ошибке на BSOD? –
Можете ли вы поделиться кодом, который взаимодействует с вашим водителем?
В любом случае, похоже, что сам драйвер неисправен: BSOD является результатом необработанного сбоя в коде, запущенном в ядре (в этом случае ваш драйвер).
Да, это возможно, косвенно. Существует много неуправляемого кода, который вы будете использовать при работе с пространствами имен, такими как System.Management, System.Windows.Media, System.Drawing.Printing, System.IO.Ports. Этот код может вызывать вызовы драйверов устройств, которые могут вызвать ошибку в драйвере устройства. Синий экран следующий.
Очевидно, что реальная проблема не в управляемом коде, это крахмальный драйвер.
Но, чтобы ответить на вопрос напрямую: нет, необработанное управляемое исключение не может вызвать BSOD.
- 1. C++ необработанные исключения
- 2. C# необработанные исключения catcher
- 3. DownloadFileAsync бросает необработанные исключения?
- 4. C# - Four Dragon Fallout4 - обходит необработанные исключения?
- 5. Записывать все необработанные исключения
- 6. Global.asax И необработанные исключения
- 7. Как «поймать» необработанные Исключения
- 8. Необработанные исключения в BackgroundWorker
- 9. Необработанные исключения в WinJS
- 10. Android Intercept Необработанные исключения
- 11. Необработанные исключения в BackgroundWorker
- 12. необработанные исключения в службе windows
- 13. Необработанные исключения на Asp.Net AJAX
- 14. Необработанные исключения при инициализации полей
- 15. Поймать необработанные исключения из редактора
- 16. Необработанные исключения и фоновые работники
- 17. Необработанные исключения в бесконечном цикле
- 18. Необработанные исключения - форсирование программы выхода
- 19. C# не ловил необработанные исключения из неуправляемой библиотеки C++
- 20. Почему необработанные исключения, вызванные обратными вызовами таймера win32, не обрабатываются отладчиком как необработанные исключения?
- 21. Не удалось захватить необработанные исключения в Winforms
- 22. C#: Необработанные исключения при преобразовании из String в DateTime
- 23. Простой способ поймать все необработанные исключения в C# .NET.
- 24. Необработанные исключения при запуске в моем проекте C#
- 25. Необработанные исключения в библиотеке классов C# для целей ведения журналов
- 26. Почему необработанные исключения печатаются на stderr в .NET/C#?
- 27. Ни Глобальный фильтр Исключения или Application_Error улавливают Необработанные исключения
- 28. Изящно ручки подавленные (необработанные) исключения в PyQt4
- 29. Как поймать необработанные исключения в приложении asp.net?
- 30. ASP.NET MVC Необработанные исключения на изображениях?
Возможно, водитель ожидает, что вы будете взаимодействовать с ним определенными способами, поэтому косвенным образом исключение может изменить способ взаимодействия с драйвером, а затем выявить основной недостаток. Если вы не можете обновить драйвер, ваш лучший вариант - сузить конкретный вариант использования, который вызывает неприятную ошибку и обходит ее. –