У меня есть несколько различных видов релизеров, таких как один для free () и один для CloseHandle ().

ался Java на протяжении нескольких лет, поэтому не отслеживал C ++. имеетнаконец-то предложение было добавлено в C ++ для обработки исключений в определении языка?

Есть ли любимая идиома, которая имитирует попытку / окончание Java?

Я также обеспокоен тем, что C ++ не имеет окончательного супертипа для всех возможных исключений, которые могут быть выброшены - как класс Throwable в Java.

Я могу написать:

try {
  // do something
} catch(...) {
  // alas, can't examine the exception
  // can only do cleanup code and perhaps rethrow, ala:
  throw;
}

ADDENDUM EDIT:

В итоге я принял ответ, набравший наибольшее количество голосов, то есть использовал деструкторы для очистки. Конечно, из моих собственных комментариев ясно, что я не совсем согласен с этим. Тем не менее, C ++ - это то, чем он является, и поэтому в своем стремлении к применению я собираюсь более или менее стремиться придерживаться общепринятой практики сообщества. Я буду использовать шаблонные классы, чтобы обернуть ресурсы, у которых еще нет деструктора классов (т. Е. Ресурсов библиотеки C), тем самым наделяя их семантикой деструктора.

НОВОЕ ИЗМЕНЕНИЕ ДОПОЛНЕНИЯ:

Хм вместонаконец-то тогда функция закрытия возможно? Закрытие в сочетании с подходом ScopeGuard (см. Один из ответов ниже) будет способом выполнения очистки с произвольными действиями и доступом к контексту внешней области кода очистки. Очистка может быть выполнена идиомным способом, который наблюдается в программировании на Ruby, где они предоставляют блоки очистки при открытии ресурса. Разве закрытие не рассматривается для C ++?

Ответы на вопрос(15)

Ваш ответ на вопрос