1
我是一个java开发人员,试图维护一些非常古老的C++代码(仍然需要使用vs2010编译)。在C++中捕获和重新抛出异常
我在家试图理解无法测试的东西的例外,所以很抱歉,如果这个问题是愚蠢的。
你可以在低级函数中抛出一个异常,只是在顶部捕获它,还是必须在每个级别上捕获并重新抛出异常?
这很复杂,因为我正在编写本机代码,调用托管代码,调用c#,调用我的java rest资源。那么在那里我有什么水平,我绝对必须赶上并转换然后再投掷。
预先感谢您。
编辑:由于Jesper已经回答了上半场,我的本地代码是否可以处理system :: exception?
“没有能力测试的东西”当然你可以测试http://ideone.com/nAwbt2。 – bolov
_“是否有任何级别,我绝对必须抓住并转换然后重新抛出”_是当你穿过ABI /语言边界时。 –
非常小心抛出异常。除非抛出站点和catch站点之间的代码是在写出例外安全(RAII等)的情况下编写的,否则很容易搞乱程序状态。这不像Java中那么简单。 – StoryTeller