我有一个类似代码的应用程序(不是我写的)
try
{
EnumerateSomeCoolHardwareDevice();
}
catch (Exception ex)
{
}
更新 - 这是 .NET C# 和 EnumerateSomeCoolHardwareDevice() 正在使用 SerialPort?
我知道这段代码有多糟糕,但它能像这样工作是有原因的!
我的问题是:我可以看到它在 EnumerateSomeCoolHardwareDevice() 的某个地方崩溃了;但它不会被 Catch (...) 捕获 - 它只是在发送报告对话框中崩溃!这目前也只发生在发布版本中...他们是否有任何原因导致我的异常不会被 catch (...) 捕获?
最佳答案
我的猜测是您在您的语言/框架中没有得到异常,而是 EnumerateSomeCoolHardwareDevice()
做了一些奇怪的事情,这些事情只会导致操作系统终止您的进程。请记住,硬件细节是通过 Java 和 .NET 等框架抽象出来的,因此无论何时直接对硬件进行操作,您都可能依赖非托管资源……无论出现什么问题都可能要了你的命,不管你是否被抓到。
关于C# 尝试/捕捉噩梦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1879830/