[squeak-dev] Why is IllegalResumeAttempt not an Error?

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Fri May 14 17:38:10 UTC 2021

Hi all!

I was just wondering why IllegalResumeAttempt is not an error. An IllegalResumeAttempt is signaled when you try to #resume from an exception that is not resumable.

In my opinion, this should pretty clearly be an Error. Just like "nil + 1", "#() at: 0", or "'hello' at: 1 put: $H", the programmer is trying to perform an illegal operation so the EHS notices this error. Why should "Error new resume" (pseudo, of course) not be an Error?

I could imagine that in ancient days, when nested exception handling did not yet work as flawlessly as today (thanks Jaromir and Nicolas for all the work on this field!), the original designers tried to prevent the case in which a second exception was handled on the stack. Nevertheless, this limitation does not exist any longer today. It would not even be a problem (although not a recommended pattern) to say something like:

[self error + 1]
    on: Error
    do: [:ex1 |
        [ex1 resume: 42]
            on: IllegalResumeAttempt
            do: [:ex2 |
                "Well, then return instead"
                ex1 return: 42] ].

So why don't we just go and make IllegalResumeAttempt an Error? Its defaultAction is already completely compatible.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210514/c73cdb6f/attachment.html>

More information about the Squeak-dev mailing list