...........только неоправданно усложнять.
это иллюзия
надо написать 3 строчки кода убрав при этом 3 другие, вопрос в чём сложность?
Как раз и используется критическая секция в некоторых методах в объекте.
Эммм, не понял к чему это..
Другой случай: SQL-запрос с переменными подстановки и Commit в try и Rollback и DeleteVariables в catch. Но в таком случае я ошибки на месте обрабатываю и дальше уже кидаю что-то осмысленное.
Ну это отдельный случай, т.к. оракл использует C интрфейс (в стандартной OCI) и там нет исключений. Но ты же наверняка уже написал свою обёртку на CPP вокруг OCI
RXL, действительно, если передавать статический объект исключения, он будет очищен при выходе из зоны видимости
1) в CBuilder да! Зона видимости кончается пределами той функции, в которой объявлено исключение.
2) в VC - не понятно! Нет! Когда происходит (и происходит ли) очистка не помню (не знаю).
что нам говорит стандарт:
The memory for the exception object is allocated in an unspecified way, except as noted in 3.7.4.1. If a
handler exits by rethrowing, control is passed to another handler for the same exception. The exception
object is destroyed after either the last remaining active handler for the exception exits by any means other
than rethrowing, or the last object of type std::exception_ptr (18.8.5) that refers to the exception object is
destroyed, whichever is later. In the former case, the destruction occurs when the handler exits, immediately
after the destruction of the object declared in the exception-declaration in the handler, if any. In the latter
case, the destruction occurs before the destructor of std::exception_ptr returns. The implementation
may then deallocate the memory for the exception object; any such deallocation is done in an unspecified
way.
Я работаю с VC++ 2003 и GCC, и всегда выбрасываю исключения так
и ловлю на зависимо от того, как далеко обработчик исключения (в стеке вызовов, рядом с точкой выброса или на 20 функции вверх)
catch(const Exception & e)
проблем с обработкой исключений не разу не наблюдал