Table of Contents

Безопасный по отношению к исключениям код

Безопасный код в смысле исключений - это код, который при выбрасывании функцией исключения работает следующим образом

Нейтральный по отношению к исключениям код - это код, передающий обработку исключения вызывающей функции.

Категории безопасности

Напоминание-ликбез

Требования к функциям

Конструктор

Деструктор и операторы delete

Деструктор не должен генерировать исключения. Этому есть несколько причин:

class Anarc
{
  ~Anarc()
  {
    throw std::exception;
  }
}
 
int main()
{
  try
  {
    Anarc* mas = new Anarc[3000];
    delete[] mas;
  }
  catch() {}
  ... // какой-то код
}

Хорошие практики

для этого можно использовать вспомогательные функции, которые выполняют все операции, способные вызвать исключения; перехватывают их и передают исключения вызывающей функции

Ссылки