错误和异常处理
在托管代码中处理异常的基本思想和非托管代码中基本相同,即把可能引发异常的代码放入try/catch
中。
在平台调用中,引发异常或错误的情形可分为两种类型:一是由非托管函数的错误托管定义导致的异常或错误。二是由托管函数本身的错误导致的异常或错误。
由非托管函数的托管定义导致的异常或错误
DllNotFoundException
异常
使用不存在的DLL会抛出该异常。
EntryPointNotFoundException
异常
非托管函数的托管声明使用的函数名无法在DLL中找到。
不正确的参数类型或者参数数目也会引发该异常。
- 字符集设置错误导致的错误
可能不会抛出异常,而是会导致乱码。
非托管函数本身导致的异常或错误
- 传递了错误的参数
传递错误的值导致错误的结果。
- 由非托管函数的错误导致的异常
最常见的是”0”作为分母导致的异常。幸运的是,由非托管代码引发的这些最常见的运行错误能在.NET中侦测到并抛出对应的托管异常。
- 捕获由非托管代码抛出的异常
.NET还能捕获由非托管代码直接抛出的异常。
无论在C++中采用哪种方式抛出异常,在托管代码中总是会抛出SEHEexception
异常。
(END)