How to handle exception in managed code and unmanaged code

As we known, try...catch mechanism is a quite common feature for the high level languages like java or C#. Although C++ proclaimed  that it supports this mechanism, the memory management limitation of C++ makes this try...catch function is weak.

C++ cannot automatically captures the exception like C# or Java, so in case of exception happens, we must throw explicitly.

// exceptions#include <iostream>usingnamespace std;int main () {  
Char* pEx = 0;
...
try  { 
if(pEx == 0)   throw 20;  }  catch (int e)  {    cout << "An exception occurred. Exception Nr. " << e << ‘\n‘;  }  
return 0;
}

But if we are coding with managed and unmanaged code, how to handle the exception?

Actually for the managed part try block no doubt can capture the exception, for the un managed part we can use one special way.

Try catching using the ExternalException class

The base exception type for all COM interop exceptions and structured exception handling (SEH) exceptions.

[SerializableAttribute][ComVisibleAttribute(true)]
public ref class ExternalException : public SystemException

As the sample above, makes your target clause derived from ExternalException class, then internally the function can capture the exception.

时间: 2024-10-13 06:21:46

How to handle exception in managed code and unmanaged code的相关文章

python handle exception

1. handle exception import sys try: a=1/1 except Exception, e: print "failed", sys.exc_info()[0] else: print "no exception" finally: print "execute final" 2. print exception try: raise Exception("aaa","bbb"

从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)

http://www.cnblogs.com/indream/p/3602348.html 刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下就开讲了. 今天看到了大家在为MVVM knockout.js友(ji)好(lie)地交流,所以就整理下然后更扩展地分享. 主要目的也不是为了争论,毕竟只是正巧主题相近,原本的打算也就是一次技术分享并且记录下来. 那么

Query的选择器中的通配符[id^=&#39;code&#39;]或[name^=&#39;code&#39;]

    1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']");//id属性以code结束的所有input标签 $("input[id*='code']");//id属性包含code的所有input标签 $("input[name^='code']");//name属性以code开始的所有input标签 $(&quo

jQuery选择器中,通配符[id^=&#39;code&#39;]input[id$=&#39;code&#39;][id*=&#39;code&#39;]

1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']");//id属性以code结束的所有input标签 $("input[id*='code']");//id属性包含code的所有input标签 (2)根据索引选择 $("tbody tr:even"); //选择索引为偶数的所有tr标签 $("tbody

iOS 自带地图定位失败原因 Code=0和Code=1区别

1:没有选择位置 Error Domain=kCLErrorDomain Code=0 "The operation couldn't be completed. (kCLErrorDomain error 0.)" 解决方案: 2:软件没有获得定位许可 Error Domain=kCLErrorDomain Code=1 "The operation couldn't be completed. (kCLErrorDomain error 1.)" 解决方案: i

从Script到Code Blocks、Code Behind到MVC、MVP、MVVM

刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式--从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下就开讲了. 今天看到了大家在为MVVM knockout.js友(ji)好(lie)地交流,所以就整理下然后更扩展地分享. 主要目的也不是为了争论,毕竟只是正巧主题相近,原本的打算也就是一次技术分享并且记录下来. 那么我们就按照大致的历史进程将这些概念进行划分: Script Code Blocks.Code

jQuery的选择器中的通配符[id^=&#39;code&#39;]或[name^=&#39;code&#39;]及jquery选择器总结

1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']");//id属性以code结束的所有input标签 $("input[id*='code']");//id属性包含code的所有input标签 $("input[name^='code']");//name属性以code开始的所有input标签 $("in

eclipse code format の google code format

一直有人问code format, 在摸里面混了这么久都是在说G 场子的XXX 所以闲来没事就去研究了下,果然大厂风范,定义规范,不多话上干货. http://google-styleguide.googlecode.com/svn/trunk/javaguide.html#s3.3.1-wildcard-imports Git 的地址: https://github.com/google/styleguide 如何使用: 在次上干货详细代码: <?xml version="1.0&quo

setInterval(code, time)中code传递参数办法

1.使用setInterval的场景 有时我们需要隔一定的时间执行一个方法,这时就会用到setInterval,但是由于这个方法是浏览器模拟出的Timer线程,在调用我们方法时不能为其传递参数. 2.setInterval传递参数办法 (1)采用string literals形式 setInterval("interval(param)",1000); 缺点:param必须是全局变量(即window对象上的变量),参数不能被周期性改变 (2)匿名函数包装 window.setInter