- Subject: [slang-users] err.line not set for try (err) on stack underflow
- From: SANGOI DINO <SANGOID@xxxxxxxxxxxxxxxxx>
- Date: Tue, 5 Apr 2005 13:32:24 +0200
Hi,
While writing a script for SLang 2 using try/catch exception handling, I've
found a small glitch: the exception object does not contains line
information for some stack underflow errors.
There is a test case: function f1() generates a stack underflow calling a
user-defined function without enough parameters. f2() does the same calling
an intrinsic function, and f3() generates a completely different error (just
for reference).
---- cut here (under.sl)
_debug_info = 1;
_traceback = 1;
define fun(a) {}
define f1() { fun(); }
define f2() { message(()); }
define f3() { () = "a" + 1; }
define test(f)
{
variable e;
try (e) {
@f();
} catch AnyError: {
vmessage("test(%s): Caught %s, at %s:%d = %s", string(f), e.descr,
e.file, e.line, string(e.message));
}
}
if (__argc != 2)
message("usage: slsh under.sl testnumber");
else {
message(" ---- error trapped with try...");
eval("test(&f"+__argv[1]+")");
message(" ---- standard error traceback");
eval("f"+__argv[1]);
}
---- cut here
And there is a transcript of a session:
dino@thor:~> slsh --version
slsh version 0.7.2-0
S-Lang Library Version: 2.0.0 pre-release candidate 7 Mar 24 2005
LLOYD dino@thor:~> slsh under.sl 1
---- error trapped with try...
test(&f1): Caught Stack Underflow Error, at ./under.sl:-1 =
---- standard error traceback
Local Variables:
Undefined_Type a = Undefined_Type
./under.sl:6:f1:Stack Underflow Error
***string***:2:<top-level>:Stack Underflow Error
called from eval: f1
Traceback: eval
dino@thor:~> slsh under.sl 2
---- error trapped with try...
test(&f2): Caught Stack Underflow Error, at ./under.sl:7 =
---- standard error traceback
Traceback: message
./under.sl:7:f2:Stack Underflow Error
***string***:2:<top-level>:Stack Underflow Error
called from eval: f2
Traceback: eval
dino@thor:~> slsh under.sl 3
---- error trapped with try...
test(&f3): Caught Type Mismatch, at ./under.sl:8 = String_Type +
Integer_Type is
not possible
---- standard error traceback
String_Type + Integer_Type is not possible
./under.sl:8:f3:Type Mismatch
***string***:2:<top-level>:Type Mismatch
called from eval: f3
Traceback: eval
This also happens without eval() and function references, I wrote it that
way to make it shorter.
It's not a very big problem, but is a bit annoying, as the traceback
contains that info.
Thanks,
Dino
_______________________________________________
To unsubscribe, visit http://jedsoft.org/slang/mailinglists.html
[2005 date index]
[2005 thread index]
[Thread Prev] [Thread Next]
[Date Prev] [Date Next]