简单取个例子,现在有以下COM指针,p1,p2,两个COM里的方法,BOOL TT1(COM指针1,COM指针2),BOOL TT2(COM指针); TT1方法,实现将COM指针1转为COM指针2, TT2作为其它操作调用,它需要的是COM指针2类型的指针。
现在,你调用TT1,传递了p1, p2(p1有效,p2为NULL),TT1方法,返回TRUE,也就是转换成功,现在p2也就是有效值。再调用TT2,返回了TRUE。这就样调用成功。但是假如我现在所使用的系统并非原始的开发系统(版本),其内核COM库,有所改变(方法的实现),当我在调用TT1方法的时候,p2返回了一个有效值,但对于此版本的系统来说,p2转换很有可能不成功(或者是有了新的方法代替,或者是此方法在此版本中不提倡再被使用,或者原始的此方法被另一个名称的方法替代,而现有版本的方法有所更新。),很就是很有可能是NULL。当其值为NULL时,系统Catch到了此异常,自动调用了另一个被兼容的方法。因此抛出了此异常。但是由于catch的作用,程序的执行仍然达到了目的。