Consider:
try {
...
} catch (Exception) {
...
} catch (StdioException) {
...
}
The second handler never matches because StdioException is a subclass of
Exception, so the first handler will always match whatever the second
matches.
Should that be a compile-time error? I think so.
Andrei