"Brad Roberts" <[email protected]> wrote in message news:[email protected]... > On Mon, 23 Nov 2009, Andrei Alexandrescu wrote: > >> 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 > > Alternate thought.. should order matter or should it automatically sort > such that most specific catch is preferred. Sort of matches the > declaration order doesn't (ok, shouldn't) matter philosophy.
Use first match: + Consistent with "else if" Use most specific match: + Consistent with template pattern matching + Possibly more practical - I can just imagine all the bugs this would probably have in DMD Personally, I'm torn. I'd probably lean more towards "most specific match", but I'd be perfectly happy either way.
