Scope guard
Назначение
Идиома Scope-guard (область-хранитель) является подходом в программировании, который используется для автоматического освобождения ресурсов и выполнения определенных действий при выходе из области видимости (scope) в программе. Используется при:
Работе с ресурсами, которые должны быть освобождены в случае исключения.
Реализации обратных вызовов (например, при регистрации обработчика событий в библиотеке или фреймворке, Scope Guard может быть использован для отмены регистрации обработчика, когда он больше не нужен.).
Работе с транзакциями (например, при работе с базами данных, транзакции могут быть начаты в конструкторе объекта и завершены в деструкторе. Scope Guard может быть использован для отката транзакции, если произошло исключение, но не для освобождения ресурсов, связанных с транзакцией.)
Решаемые задачи
Сохранение ресурсов при выходе из области видимости, если исключение не проброшено
Идиома RAII позволяет получать ресурсы в конструкторе и высвобождать их в деструкторе, когда область заканчивается успешно или из-за исключения. Однако, иногда необходимо не высвобождать ресурсы, если исключение не выбрасывается. Идиома Scope-guard решить эту задачу и улучшить типичную реализацию идиомы RAII с помощью условной проверки.
Общая реализация на языке C++
Last updated
Was this helpful?