Cor*_*ger 13 c++ com exception
我应该使用哪一个?
catch (_com_error e)
Run Code Online (Sandbox Code Playgroud)
要么
catch (_com_error& e)
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 28
第二.这是我引用萨特的尝试
"按价值投掷,参考"
学会
catch正确:按值(不是指针)抛出异常并通过引用(通常是const)捕获它们.这是与异常语义最佳匹配的组合.当重新抛出同样的异常,宁愿只是throw;到throw e;.
这是完整的第73项.按价值投掷,以参考方式捕获.
避免按值捕获异常的原因是它隐式地创建了异常的副本.如果异常属于子类,则有关它的信息将丢失.
try { throw MyException ("error") }
catch (Exception e) {
/* Implies: Exception e (MyException ("error")) */
/* e is an instance of Exception, but not MyException */
}
Run Code Online (Sandbox Code Playgroud)
通过引用捕获可以通过不复制异常来避免此问题.
try { throw MyException ("error") }
catch (Exception& e) {
/* Implies: Exception &e = MyException ("error"); */
/* e is an instance of MyException */
}
Run Code Online (Sandbox Code Playgroud)