[m-users.] [m-dev.] Pure Functional throwing exception

Charles Shuller charles.shuller at gmail.com
Wed May 8 23:45:50 AEST 2019

Hi Julien,

In the below message you mentioned it would be better NOT to do:

exception.throw("Badness happened, terminating")

Which is something I do quite a lot of to get a non-local exit.   As in,
the exception should never be handled, I just want the program to halt with
some appropriate error message.

It sounded like you recommended the following instead (note the addition of
the exception.software_error):

exception.throw(  exception.software_error("Badness happened,
terminating")  )

Which is a bit more typing, but I don't see how this makes things any
better.   A new type for each kind of exception makes sense to me if I
wanted to handle my exceptions, but boxing all messages as software_error
types doesn't intuitively make sense to me.

Can you explain your reasoning for me??



On Tue, May 7, 2019 at 12:29 AM Julien Fischer <jfischer at opturion.com>

> Hi,
> On Tue, 7 May 2019, Barthwal wrote:
> > Can a pure function throw exceptions?
> In Mercury, yes.
> > I don't plan to catch these functions in pure function.
> If you wanted to, you could.  (Although doing so may affect
> the determinism for your function.)
> > But if something illegal happens, I want to send a message like:
> >
> > throw error("Some Message")
> Assuming you don't catch the exception within your program, the
> runtime's uncaught exception handler will print the exception out when
> the exception propagates back past main/2.   (It may also print a stack
> trace if you're using a grade that records that information.)
> As a general rule, I would recommend not throwing strings about.  The
> library has a builtin type named software_error/1 which is suitable for
> exceptions where something illegal happens.
> Julien.
> _______________________________________________
> developers mailing list
> developers at lists.mercurylang.org
> https://lists.mercurylang.org/listinfo/developers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurylang.org/archives/users/attachments/20190508/f1074afe/attachment.html>

More information about the users mailing list