Hi

2018-02-05 11:00 GMT+01:00 Igor Stasenko <siguc...@gmail.com>:

>
>
> On 5 February 2018 at 10:17, Marcus Denker <marcus.den...@inria.fr> wrote:
>
>> Hello,
>>
>> The Sunit-Debugger does a stack search on startup to find the test
>> related exception.
>>
>> It might be good to do it better, especially as the debug process starts
>> from the exception
>> I might be a good idea to actually keep a reference to it.
>>
>> Would there be any downside of Exception>>debug passing a reference to
>> the Debugger?
>>
>>         Marcus
>>
>>
>> > On 2 Feb 2018, at 17:19, Peter Uhnák <i.uh...@gmail.com> wrote:
>> >
>> > Hi,
>> >
>> > is there a way to install a global handler for exceptions?
>> >
>> > Right now if I want to log all exceptions, I use approach from
>> ShoreLine and create a PreDebugAction which is activated when any
>> "unhandled" exception occurs.
>> >
>> > That would be good enough, however the Debugger has zero knowledge of
>> the exception that is actually occuring, as Exception>>debug passes on only
>> the title. So if I want to get back to the original exception and maybe log
>> it with beacon, I need to do a lot of stack and context shenanigans:
>> >
>> > MyPreDebugAction>>logException
>> >       MyLogger
>> >               runDuring: [ (debugger session interruptedProcess
>> suspendedContext stack
>> >                               detect: [ :context | context receiver
>> isKindOf: Exception ]) receiver emit ]
>> >
>> >
>> > Is there a better way to approach this?
>>
>
> if you own a process (you creating it) , then it is just a piece of cake,
> just make a topmost block
> with #on:do:
> if you don't own a process (suppose you wanna watch already existing one)
> , it can be done by injecting own context at the bottom of stack ,
> well, unless there are exception handler(s) upper, that catch any
> exception(s) before you can see them.
>

I added it in Pharo 6:

aProcess on: Error do: [:err | err logCr]

It works in both cases: when process is not started and when it is already
running.
I used it to intercept errors of forked processes during test run.

It would be cool to add #ensure: in addition.


>
> I think a much better way would be to watch exceptions even before they
> being handled,
> for this, i would override Exception>>#signal
> and add some kind of logging or notification .. well, anything you see fit.
> That's, of course, a kind of dangerous, be careful. Do not attempt to
> throw new exceptions while processing just signaled one, else
> you'll get infinite recursion :)
>
>
> >
>> > Thanks,
>> > Peter
>>
>>
>>
>
>
> --
> Best regards,
> Igor Stasenko.
>

Reply via email to