Hmm...

Usually when I throw errors I try to make my tests somewhat
readable and either

a) form a simple (fast) sentence which throws the desired error, or
b) use an assert.


--
Raul

On Thu, May 12, 2022 at 6:10 PM Jan-Pieter Jacobs
<janpieter.jac...@gmail.com> wrote:
>
> Hi, I have some questions on error reporting.
>
> I wrote this verb, I thought could be handy alongside the assert verb in
> the standard library:
>
> assertno =: 0 0$([ 13!:8~ ],~(LF,'|  '),~ (9!:8'') {::~ <:@[)&>/@[^:(0 e. ])
>
> it takes as x: error_number;'message', and as y the same as for assert (i.
> e. it throws the error if 0 is an element in y). The error thrown will be
> error number as specified, have a default header (as per 9!:8'') and an
> additional custom text. For instance:
>
>    (3;'my message') assertno 0
>
> |domain error
>
> |  my message: assertno
>
> |   (3;'my message')    assertno 0
>
>  It allows passing a bit more context to a user, in my opinion useful, to
> give more info instead of a mere assertion error, especially in library
> code/OOP contexts.
>
>
> That said, is such use of the error numbers/messages
> recommended/allowed/frowned upon/silly?
>
> Another question I have with regards to errors happening with a changed
> locale.
>
> I have:
>
> ret=: coname''
>
> cocurrent 'other'
>
> do_stuff'' NB. could throw error
>
> cocurrent ret
>
> If do_stuff errors, the code ends up in the 'other' locale, which is
> especially bad if it happens in library code taking for instance a user
> verb it doesn't have control over.
>
> Now I'd like to wrap the "do stuff" in a try-catch, such that in the catch,
> the locale is reset to ret if do_stuff throws an error, to afterwards
> re-throw the exact same error. I tried to find a solution, but using (dberm
> dbsig dberr)'' sort of jumbles the message. Is there a better way of simply
> forwarding the error without touching it?
>
>
> Thanks,
>
> Jan-Pieter
>
> PS: I'm preparing an update to my types_dict addon, that's why I'm coming
> up with so many questions.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to