我正在使用SWIG將C++庫封裝到JAVA中,遵循Handling C++ exceptions in Java via SWIG的想法。SWIG和例外:避免在C++中使用throw(Exception)
我已經能夠包裝我所有的異常,但是如果在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。問題是,我可以避免它嗎?怎麼樣?
你檢查http://web.mit.edu/Ghudson/trac/src/swig-1.3.25 /Doc/Manual/Java.html#exception_handling?顯然你必須捕捉C++異常並拋出一個Java異常。 – Esus