Fix #2153773 - %nojavaexception - disabling and clearing Java checked exceptions
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10998 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
7adb84f448
commit
e6f5cdac9f
7 changed files with 85 additions and 4 deletions
|
|
@ -143,3 +143,41 @@ try {
|
|||
}
|
||||
%}
|
||||
|
||||
// Test %nojavaexception
|
||||
%javaexception("MyException") %{
|
||||
/* global exception handler */
|
||||
try {
|
||||
$action
|
||||
} catch (MyException) {
|
||||
jclass excep = jenv->FindClass("java_throws/MyException");
|
||||
if (excep)
|
||||
jenv->ThrowNew(excep, "exception message");
|
||||
return $null;
|
||||
}
|
||||
%}
|
||||
|
||||
%nojavaexception *::noExceptionPlease();
|
||||
%nojavaexception NoExceptTest::NoExceptTest();
|
||||
|
||||
// Need to handle the checked exception in NoExceptTest.delete()
|
||||
%typemap(javafinalize) SWIGTYPE %{
|
||||
protected void finalize() {
|
||||
try {
|
||||
delete();
|
||||
} catch (MyException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
%}
|
||||
|
||||
%inline %{
|
||||
struct NoExceptTest {
|
||||
unsigned int noExceptionPlease() { return 123; }
|
||||
unsigned int exceptionPlease() { return 456; }
|
||||
~NoExceptTest() {}
|
||||
};
|
||||
%}
|
||||
|
||||
// Turn global exceptions off (for the implicit destructors)
|
||||
%nojavaexception;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue