Mercurial > octave-nkf
diff test/try.tst @ 17249:923ce8b42db2
improve try-catch-statement to save exception to a variable (bug #33217)
* oct-parse.in.yy (except_command): Handle exception identifiers.
* oct-parse.in.yy, parse.h (octave_base_parser::make_try_command):
New arg, ID.
* pt-except.cc, pt-except.h (tree_try_catch_command::expr_id): New
data member.
(tree_command::tree_command): Initialize it.
(tree_command::~tree_command): Delete it.
(tree_command::identifier): New function.
* pt-check.cc (tree_checker::visit_try_catch_command): Check for valid
expr_id.
* pt-pr-code.cc (tree_print_code::visit_try_catch_command):
Print expr_id.
* pt-eval.cc (tree_evaluator::visit_try_catch_command): Assign message
and identifier to variable.
* try.tst: New test.
* NEWS: Note change.
author | Stefan Mahr <dac922@gmx.de> |
---|---|
date | Tue, 13 Aug 2013 19:35:53 +0200 |
parents | 333243133364 |
children | e6c0ac8ce5b6 |
line wrap: on
line diff
--- a/test/try.tst Tue Aug 13 19:31:59 2013 -0400 +++ b/test/try.tst Tue Aug 13 19:35:53 2013 +0200 @@ -127,3 +127,34 @@ %! assert (lasterr()(1:22), "rethrow: 'a' undefined"); %! end_try_catch +%!test +%! clear myerr; +%! try +%! error ("user-defined error"); +%! catch myerr +%! assert (myerr.message, "user-defined error"); +%! end_try_catch + +%!test +%! try +%! clear a; +%! error ("user-defined error"); +%! catch a=1; +%! assert (lasterr, "user-defined error"); +%! assert (a, 1); +%! end_try_catch + +%!test +%! clear myerr1 +%! clear myerr2 +%! try +%! try +%! clear a; +%! a; +%! catch myerr1 +%! error (myerr1); +%! end_try_catch +%! catch myerr2 +%! assert (myerr1.message, myerr2.message); +%! assert (myerr1.identifier, myerr2.identifier); +%! end_try_catch