"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.


Reply via email to