QScopeGuard Class
Provides a scope guard for calling a function at the end of a scope. More...
| Header: | #include <QScopeGuard> |
| qmake: | QT += core |
| Since: | Qt 5.12 |
This class was introduced in Qt 5.12.
Public Functions
| void | dismiss() |
Related Non-Members
| QScopeGuard<F> | qScopeGuard(F f) |
Detailed Description
Member Function Documentation
void QScopeGuard::dismiss()
Disarms the scope guard, so that the function F will not be called at the end of the scope.
Related Non-Members
QScopeGuard<F> QScopeGuard::qScopeGuard(F f)
The qScopeGuard function can be used to call a function at the end of the scope.
QScopeGuard<F> is a class which sole purpose is to run a function F in its destructor. This is useful for guaranteeing your cleanup code is executed, whether the function is exited normally, exited early by a return statement, or exited by an exception.
If F is a lambda then you cannot instantiate the template directly, therefore the qScopeGuard() helper is provided and QScopeGuard<F> is made a private implementation detail.
Example usage is as follows:
void myComplexCodeWithMultipleReturnPoints(int v)
{
// The lambda will be executed right before your function returns
auto cleanup = qScopeGuard([] { code you want executed goes HERE; });
if (v == -1)
return;
int v2 = code_that_might_throw_exceptions();
if (v2 == -1)
return;
(...)
} Note: Exceptions are not supported. The callable shouldn't throw when executed, copied or moved.
See also QScopedValueRollback.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qscopeguard.html