which could just as well be written as:
try { ... } catch (object err) { if (err->is_my_error && err->failure_pos > 4711) { ... } else throw(err); }
That looks exactly like the example I used in a different part of the thread to show how bad it gets when there's no dynamic test feature in the catch clause, so I guess I need to argue that point a bit more:
1. It's a step backward to the current situation where you have to catch more errors than you want. The risk is of course to miss/forget/ignore rethrowing the unwanted errors.
In the worst case, where one for some reason doesn't want to type the error object harder than "object", there'd be no gain at all from the current situation.
2. You get the nested-else-problem. "throw(err)" is not really what you want to do in that else clause. Rather you want to go on trying the next catch clause, but that's not syntactically possible.