C++中的异常捕获与重启

C++中的异常捕获与重启,c++,exception,managed,C++,Exception,Managed,我是一个java开发人员,试图维护一些非常古老的C++代码,仍然需要使用VS2010来编译。 我在家里试图理解异常,但没有测试东西的能力,如果这个问题很愚蠢,我很抱歉 您可以在低级别函数中抛出异常,然后在顶部捕获它,还是必须在每个级别捕获并重新抛出它 我正在编写本机代码、调用托管代码、调用c、调用java rest资源,这一事实使情况变得复杂。所以有没有任何关卡,我绝对要抓住并转换,然后再扔 先谢谢你 编辑:正如Jesper回答的上半部分,我的本机代码可以处理system::exception吗

我是一个java开发人员,试图维护一些非常古老的C++代码,仍然需要使用VS2010来编译。
我在家里试图理解异常,但没有测试东西的能力,如果这个问题很愚蠢,我很抱歉


您可以在低级别函数中抛出异常,然后在顶部捕获它,还是必须在每个级别捕获并重新抛出它

我正在编写本机代码、调用托管代码、调用c、调用java rest资源,这一事实使情况变得复杂。所以有没有任何关卡,我绝对要抓住并转换,然后再扔

先谢谢你


编辑:正如Jesper回答的上半部分,我的本机代码可以处理system::exception吗?

您可以在低级函数中抛出异常,然后在顶部捕获它吗?是的


是否必须在每个关卡捕捉并重新投掷否。

您能否在低级别函数中抛出异常,然后在顶部捕获它?是的


是否必须在每个关卡捕捉并重新投掷否。

没有测试功能当然可以测试。是否有任何级别我必须捕获并转换,然后在跨越ABI/语言边界时重新抛出“是”。抛出异常时要非常小心。除非在编写抛出站点和捕获站点之间的代码时考虑了RAII之类的异常安全性,否则很容易搞乱程序状态。它不像java中那么简单。@ BuroOOPS刚刚发现Link是——你需要捕获C++异常并将其翻译成适用于上面的层的结果/异常。例如java java C++调用java,你会捕获C++异常,然后返回Java,使用JNI抛出一个适当的Java异常,然后从C++代码返回到Java。如果没有测试的能力,你当然可以测试。是否有任何级别,我必须捕获并转换,然后在你跨越ABI/语言边界时重新抛出“是”。抛出异常时要非常小心。除非在编写抛出站点和捕获站点之间的代码时考虑了RAII之类的异常安全性,否则很容易搞乱程序状态。它不像java中那么简单。@ BuroOOPS刚刚发现Link是——你需要捕获C++异常并将其翻译成适用于上面的层的结果/异常。例如java java C++调用java,你会捕获C++异常,然后返回Java,使用JNI抛出一个适当的Java异常,然后从C++代码返回到Java。