我正在使用VSTO并想检查某个COM对象中是否有某个属性。当它可用时,它将返回一个结果,当它不可用时,它将返回一个异常。
捕获一个com异常非常慢,我想知道是否有一种更有效的方法来检查该属性是否会抛出异常。
请注意,此问题类似,但没有解决方案:How to check if a COM property or method exists without generating an exception?
请注意,还有另一种方法可以通过使用Range.SpecialCells来检查范围是否有验证,但我正在寻找检测COM对象中的属性是否可用的更一般的解决方案,因为这样其他Excel COM对象也会出现相同的性能问题。
举个例子。如果范围具有数据验证,则Range.Validation.Type属性将返回结果,如果它没有数据验证,则它将引发异常。下面的代码在有或没有的单元格上测试10次数据验证。在我的计算机上对具有数据验证的单元进行测试时输出的时间为0毫秒,而未进行数据验证的单元则需要超过500毫秒。
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "
14
14
21
42
12"
答案 0 :(得分:0)
这样的事情怎么样:
r = Regexp.new('\?|\.|!')
#=> /\?|\.|!/