我偶然发现了一篇关于检测VMWare或虚拟PC的文章
http://www.codeproject.com/KB/system/VmDetect.aspx
我看到他们使用了某种try-except语句。
所以我在MSDN中查了一下:http://msdn.microsoft.com/en-us/library/s58ftw19%28v=vs.80%29.aspx
我不明白为什么我要用try-除非是用好的旧的try-catch。它是否只是给我提供了有关异常的附加信息?
如果是这样,我可以在使用附加文章中的代码时使用try-catch,对吗?
谢谢:)
发布于 2011-07-07 01:32:31
__try/__except是一个try/catch,用于不同类型的异常。您可以捕获硬件异常,如浮点冲突、错误的指针取消引用等,而不是C++异常。这就是所谓的结构化异常处理,或者SEH,如果你知道去哪里看的话,MSDN上有很多关于它的内容。
在这种情况下,他们使用它来检测无效指令。这是他们尝试执行x86不支持的指令的地方,虚拟机使用这些指令。如果你在一个真实的CPU上运行,那么你会得到一个无效的指令异常,如果你在一个虚拟机上运行,你只是和它对话。
发布于 2011-07-07 01:29:41
MSDN通常不清楚所有这一切,但__try/__except处理的异常不是C++异常,而是系统异常。像分割错误这样的东西。
发布于 2011-07-07 01:34:26
__try和__except是structured exception handling的一部分,这是一个与标准异常处理模型不同的异常处理模型,因为它处理硬件异常的方式与处理软件异常的方式相同,有关信息,请参阅链接。
https://stackoverflow.com/questions/6600507
复制相似问题