[mercury-users] question about error/1
Ralph Becket
rafe at csse.unimelb.edu.au
Thu Jan 24 13:33:34 AEDT 2008
Mark Brown, Thursday, 24 January 2008:
> Hi Nick,
>
> On 24-Jan-2008, Nicholas Nethercote <njn at csse.unimelb.edu.au> wrote:
> > On Thu, 24 Jan 2008, Ralph Becket wrote:
> >
> >>> When I call error/1, the program terminates with a message like this:
> >>>
> >>> Uncaught Mercury exception:
> >>> Software Error: <message>
> >>>
> >>> Is it possible to omit the "Uncaught Mercury exception: Software Error:"
> >>> bit?
> >>
> >> That's rather the point of error/1. You just use throw/1 for other
> >> exceptions.
> >
> > I just want to abort easily with a message of my choosing. Instead I get a
> > message of my choosing plus some other stuff, which will likely confuse
> > users. To avoid that confusion, I have to use 'try' + I/O, which is a
> > hassle.
> >
> > In short, it would be nice to be able to abort with a message of my
> > choosing.
>
> The implementation of error/1 is
>
> error(Message) :-
> throw(software_error(Message)).
>
> so I think throw/1 is what you want.
Talking to Nick, I think what he wants is something like
abort_with_my_error_message_and_no_window_dressing(string).
You can code this up fairly easily at the top-level:
:- pred main(io::di, io::uo) is cc_multi.
main(!IO) :-
try_io(my_main, Result, !IO),
(
Result = succeeded(_)
;
Result = exception(Excn),
( if Excn = univ.value(no_window_dressing(ErrMsg)) then
io.write_string(io.stderr_stream, ErrMsg, !IO),
io.nl(io.stderr_stream, !IO),
io.set_exit_status(1, 1IO)
else
rethrow(Result)
)
).
:- pred my_main(dummy_value::out, io::di, io::uo) is det.
my_main(dummy_value, !IO) :-
... business as usual ...
:- type no_window_dressing ---> no_window_dressing(string).
:- pred abort_with_my_error_message_and_no_window_dressing(string::in)
is erroneous.
abort_with_my_error_message_and_no_window_dressing(ErrMsg) :-
throw(no_window_dressing(ErrMsg)).
--------------------------------------------------------------------------
mercury-users mailing list
Post messages to: mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions: mercury-users-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the users
mailing list