Hi -
I have a subclass of ComposablePresenter (lets call it MyPresenter) that seems to work how I want. When doing some processing I'd like to open MyPresenter when an exception occurs and pass it the exception e.g. [ [self testCondition] whileTrue:[ self doSomeStuff] ] on: MyNotification do:[:ex | self openMyPresenterWith: ex] But that just results in lots of MyPresenter windows opening while the execution of the #whileTrue: loop runs its course. How do I pause the loop so I can use the MyPresenter window to modify and fix the condition that raised the MyNotification? The MyPresenter window just edits the contents of a couple Dictionaries so isn't too tricky but it isn't really as easy to do in a debugger as it is clicking a radio button and a "do it" button. Thanks |
Administrator
|
Paul, I'm going by memory and not Pharo specific. I believe the default handling of the end of the exception block is implicitly equivalent to ex return: nil. So, to get further handling of the exception, you need to #pass it or otherwise resignal it. Then the development environment will catch and handle the unhandled exception. On Wed, Nov 20, 2019, 20:53 PAUL DEBRUICKER <[hidden email]> wrote: Hi - |
Thanks Richard. That helped me figure it out. I ended up doing:
[ [self testCondition] whileTrue:[ self doSomeStuff] ] on: MyNotification do:[:ex | |presenter | presenter:=MyPresenter forException: ex . presenter openWithSpec. Smalltalk ui theme runModal: presenter window] Which does what I want Richard Sargent wrote > Paul, I'm going by memory and not Pharo specific. > > I believe the default handling of the end of the exception block is > implicitly equivalent to ex return: nil. > > So, to get further handling of the exception, you need to #pass it or > otherwise resignal it. Then the development environment will catch and > handle the unhandled exception. > > > On Wed, Nov 20, 2019, 20:53 PAUL DEBRUICKER < > pdebruic@ > > wrote: > >> Hi - >> >> I have a subclass of ComposablePresenter (lets call it MyPresenter) that >> seems to work how I want. When doing some processing I'd like to open >> MyPresenter when an exception occurs and pass it the exception e.g. >> >> >> [ [self testCondition] whileTrue:[ self doSomeStuff] ] >> on: MyNotification >> do:[:ex | self openMyPresenterWith: ex] >> >> But that just results in lots of MyPresenter windows opening while the >> execution of the #whileTrue: loop runs its course. >> >> >> How do I pause the loop so I can use the MyPresenter window to modify and >> fix the condition that raised the MyNotification? >> >> The MyPresenter window just edits the contents of a couple Dictionaries >> so >> isn't too tricky but it isn't really as easy to do in a debugger as it is >> clicking a radio button and a "do it" button. >> >> >> Thanks >> -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html |
Free forum by Nabble | Edit this page |