我有以下代码:
try
{
retval = axNTLXRemote.IsUnitPresent(_servers[0].IPAddress, 1, _servers[0].RemotePort, _servers[0].CommFailDelay * 1000);
}
catch (COMException ce)
{
throw ce;
}
这给了我想要摆脱的以下警告:
CA2200 : Microsoft.Usage : 'Connect()' 重新抛出捕获的异常并将其明确指定为参数。改为使用不带参数的“抛出”,以保留最初引发异常的堆栈位置。
我已阅读以下内容try/catch/throw 和 try/catch(e)/throw e 之间的区别,并且我理解 'throw ce; 将重置堆栈跟踪并使其看起来好像从该函数引发了异常。
我想简单地将其更改为“throw”而不是“throw ce”,这将消除警告。
以下捕获有什么区别:
catch (COMException ce) { throw; }
和
catch (COMException) { throw; }
如果我希望以某种方式使用 ce 变量,我是否只需要拥有“COMException ce”?
另外,当我执行“throw”或“throw ce”时,是调用函数处理还是捕获它?我对此有点不清楚。