On Mon, Apr 3, 2023 at 6:00 AM Sven Schreiber
<sven.schreiber(a)fu-berlin.de> wrote:
I'm wondering why sometimes there exist informative error messages but it doesn't
seem easy to catch them. Here's a concrete (and real-world-inspired) use case:
? m = feval("haha")
haha: function not found
That's exactly the right error message! However, now I try to retrieve that
programmatically:
? catch m = feval("haha")
? eval errmsg($error)
Datenfehler # ( = data error)
This is much less useful. Could the precise message be pushed through to the error? Hm, I
guess there aren't that many formally encoded error types...
The trouble is that an error caught by "catch" is by construction not
an error. When we're responding to errmsg($error) all we have to show
is the "boilerplate" message associated with the error code that was
set, then removed by "catch". But there may be a way to improve on
that...
And BTW, here's a different and a little ironic example:
? m = I(2,3,4)
I: zuviele Argumente # (= too many arguments)
? catch m = I(2,3,4)
I: zuviele Argumente
? eval errmsg($error)
Befehl hat zu wenige Argumente # (= command with too *few* arguments)
OK, that was a case where the wrong internal error code, E_ARGS, was
set in a case of too many arguments; E_INVARG is now substituted, with
a generic message of "Invalid argument" (not very specific, but not
flat-out wrong).
Allin