Octave: Caught exceptions display the type of the C++ exception instead of the generic 'c++-side threw an exception' message

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11595 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2009-08-16 22:05:47 +00:00
commit fc68afcf73
3 changed files with 15 additions and 12 deletions

View file

@ -1,6 +1,10 @@
Version 1.3.40 (in progress) Version 1.3.40 (in progress)
============================ ============================
2009-08-16: wsfulton
[Octave] Caught exceptions display the type of the C++ exception instead of the
generic "c++-side threw an exception" message.
2009-08-16: wsfulton 2009-08-16: wsfulton
[Java] When %catches is used, fix so that any classes specified in the "throws" [Java] When %catches is used, fix so that any classes specified in the "throws"
attribute of the "throws" typemap are generated into the Java method's throws clause. attribute of the "throws" typemap are generated into the Java method's throws clause.

View file

@ -6,40 +6,39 @@ a = A();
try try
a.foo() a.foo()
catch catch
if (!strcmp(raised(),"E1")) if (!strcmp(lasterror.message, "error: C++ side threw an exception of type E1\n"))
error, "bad exception order" error("bad exception order")
endif endif
end_try_catch end_try_catch
try try
a.bar() a.bar()
catch catch
if (!strcmp(raised(),"E2")) if (!strcmp(lasterror.message, "error: C++ side threw an exception of type E2\n"))
error, "bad exception order" error("bad exception order")
endif endif
end_try_catch end_try_catch
try try
a.foobar() a.foobar()
catch catch
[t,e]=raised(); if (!strcmp(lasterror.message, "error: postcatch unknown (SWIG_RuntimeError)\n"))
if (!strcmp(e.args(0),"postcatch unknown")) error("bad exception order")
error
endif endif
end_try_catch end_try_catch
try try
a.barfoo(1) a.barfoo(1)
catch catch
if (!strcmp(raised(),"E1")) if (!strcmp(lasterror.message, "error: C++ side threw an exception of type E1\n"))
error, "bad exception order" error("bad exception order")
endif endif
end_try_catch end_try_catch
try try
a.barfoo(2) a.barfoo(2)
catch catch
if (!strcmp(raised(),"E2")) if (!strcmp(lasterror.message, "error: C++ side threw an exception of type E2 *\n"))
error, "bad exception order" error("bad exception order")
endif endif
end_try_catch end_try_catch

View file

@ -32,7 +32,7 @@
#define SWIG_SetConstant(name, obj) SWIG_Octave_SetConstant(module_ns,name,obj) #define SWIG_SetConstant(name, obj) SWIG_Octave_SetConstant(module_ns,name,obj)
// raise // raise
#define SWIG_Octave_Raise(obj, type, desc) error("c++-side threw an exception") #define SWIG_Octave_Raise(OBJ, TYPE, DESC) error("C++ side threw an exception of type " TYPE)
#define SWIG_Raise(obj, type, desc) SWIG_Octave_Raise(obj, type, desc) #define SWIG_Raise(obj, type, desc) SWIG_Octave_Raise(obj, type, desc)
// Include the unified typemap library // Include the unified typemap library