| Re[4]: RAII + exceptions | |
| От: | Кодт модератор | ||
| Дата: | 18.03.10 16:56 | ||
| Оценка: | +1 | ||
| Здравствуйте, uzhas, Вы писали: GN>>И кстати для любителей экзотики добавлю: освобождение памяти тоже может породить отказ оборудования, как решить это проблему c delete? U>вы очень сильно отвлеклись от темы U>особенности работы с физикой лучше обсуждать в отдельной ветке U>данная ветка немного о другом : есть API, который возвращает ошибки или исключения в случае каких-то обстоятельств. как грамотно обрабатывать такие ошибки в парадигме RAII для языка C++? U>delete вроде бы в своем API не описывает возможные исключения или коды ошибок U>всякие close, CloseHandle, transaction->Rollback() возвращают коды ошибок. надо их грамотно обрабатывать. вопрос не в том, что это за коды и почему они возникли, а в том как обрабатывать эти коды. У нас, грубо говоря, есть два сценария: 1) открыть — попользоваться — забыть (и закрыть) 2) открыть — попользоваться — закрыть и убедиться — забыть (уже закрытое) Кто мешает писать close(), commit(), rollback() и т.п. явно? И обрабатывать ошибки можно прекрасно.
Так что RAII не отменяет явную обработку конца, и даже не маскирует проблему. А помогает там, где на самом деле проблемы нет. Перекуём баги на фичи! |