$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Alan Bellingham (alan_at_[hidden])
Date: 2002-09-23 07:11:54
Peter Dimov:
>From: "Victor A. Wagner, Jr." <vawjr_at_[hidden]>
>> I understand, but it's a lot faster to do a "switch" on an int, than on a
>> const char* (another thing left out of the language)
>
>Why would you do a "switch" on an exception's error code?
Exactly - switch() is often a sign you can do something better. In the
case of the exception hierarchy, you'd use more specialised catch blocks
and make use of the dynamic type of the exception.
As I understood Vladimir, he was was after something like:
std::exception
|
...
|
rename::exception
|
-------------------------
| |
rename::not_found rename::different_media
In this case, he can catch a rename::different_media exception and do a
copy/delete, but just ignore any other one. It's probably cleaner than
catching a rename::exception, switching on a reason code in that
exception, and either rethrowing it or handling it depending on the
reason code.