gpt4 book ai didi

java - SWIG 和异常 : avoid using throw(Exception) in C++

转载 作者:行者123 更新时间:2023-11-30 05:37:37 25 4
gpt4 key购买 nike

我正在使用 SWIG 将 C++ 库包装到 JAVA 库中,遵循 Handling C++ exceptions in Java via SWIG 的想法.

我已经能够包装我的所有异常,但是如果在 C++ 声明中未明确告知启动异常的函数,则 JAVA 代码将不起作用。例子:如果我这样做

class A {
public:
void f () throw (MyException){};

一切如期而至。但是,如果我这样做

class A {
public:
void f (){};

当我使用代理类在 JAVA 中捕获异常时

try {
// this is the proxy wrapped (java) class
A.f();
}
catch(MyException e)
{
...
}

JAVA编译失败,出现如下错误

exception MyExceptionn is never thrown in body of corresponding try statement

如果可以避免,我不想在我的 C++ 代码中使用异常通知 http://www.gotw.ca/publications/mill22.htm .问题是,我可以避免吗?怎么办?

最佳答案

使 MyExtension 扩展 RuntimeException 而不是 Exception,然后它可以从任何函数抛出,而不仅仅是显式声明 throws 子句的函数。

static class MyException extends RuntimeException {

}

...

static void f() {
throw new MyException();
}

...

try {
f();
} catch(MyException e) {

}

关于java - SWIG 和异常 : avoid using throw(Exception) in C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33146568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com