G'day Alexander,
As per the original question, I focussed on the interface rather than the implementation. I did, however, leave some clues but I didn't expand upon them.
When I said "I would assume your error objects are instantiated from classes with appropriate information; for example, a RangeError class has min and max attributes.", I was thinking that myroutine() might look something like:
sub myroutine { ... if ($n < 5 or $n > 10) { die RangeError::->new(min => 5, max => 10, got => $n, ...); + } ... }
Then a generic $dispatch_error{RangeError} routine would have sufficient information to generate an error message. That might look something like:
ERROR: Out of bounds. The allowed range is $e->min() to $e->max() (inc +lusive). The number received was $e->got().
The RangeError class might even have some boilerplate to create such a message using the attribute values of the error object.
My main intent was to suggest an interface with "an easy syntax" (as requested) and to decouple the implementation. I hadn't really given the implementation details much thought; however, what I've described above, is roughly what had in the back of my mind.
— Ken
In reply to Re^3: conditional catch-blocks 'try {} catch(COND) { }'
by kcott
in thread conditional catch-blocks 'try {} catch(COND) { }'
by LanX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |