zhouqijie

错误和异常处理

在托管代码中处理异常的基本思想和非托管代码中基本相同,即把可能引发异常的代码放入try/catch中。

在平台调用中,引发异常或错误的情形可分为两种类型:一是由非托管函数的错误托管定义导致的异常或错误。二是由托管函数本身的错误导致的异常或错误。



由非托管函数的托管定义导致的异常或错误

使用不存在的DLL会抛出该异常。

非托管函数的托管声明使用的函数名无法在DLL中找到。

不正确的参数类型或者参数数目也会引发该异常。

可能不会抛出异常,而是会导致乱码。



非托管函数本身导致的异常或错误

传递错误的值导致错误的结果。

最常见的是”0”作为分母导致的异常。幸运的是,由非托管代码引发的这些最常见的运行错误能在.NET中侦测到并抛出对应的托管异常

.NET还能捕获由非托管代码直接抛出的异常。

无论在C++中采用哪种方式抛出异常,在托管代码中总是会抛出SEHEexception异常。

(END)