logo       

Exception hacks (was Re: Changing error message): msg#00198

lang.smalltalk.squeak.beginners

Subject: Exception hacks (was Re: Changing error message)

Ron Teitelbaum schrieb:

In order to not break your regular code you will need to wrap the normal
call to saleItem:price:taxRate: with:
on: GetSaleDateError do: [:ex | ex resume: Date today].

Actually there is no need to wrap any regular code, if you do it properly ;-)

You should not call this GetSaleDateError but, say, SaleDateHack and make it a Notification subclass. Unlike Error subclasses, Notification subclasses work fine even without an on:do: exception handler. That's because their #defaultAction simply answers nil instead of opening the debugger.

If there is no handler, "SaleDateHack signal" will simply answer nil, so you can replace your original "Date today" code with

date := SaleDateHack signal ifNil: [Date today].

(this is even better design-wise than implementing your notification's #defaultAction as "self resume: Date today" because you see the default value right where it is used, rather than hidden in the notifiction class)

(Don't tell anyone I mentioned this !^)

Don't tell anyone I replied to this on the *newbies* list - I'd consider this well advanced. It's fun stuff anyway ;-)

- Bert -


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise