bugprone-unhandled-exception-at-new¶
Finds calls to new
with missing exception handler for std::bad_alloc
.
int *f() noexcept {
int *p = new int[1000];
// ...
return p;
}
Calls to new
can throw exceptions of type std::bad_alloc
that should
be handled by the code. Alternatively, the nonthrowing form of new
can be
used. The check verifies that the exception is handled in the function
that calls new
, unless a nonthrowing version is used or the exception
is allowed to propagate out of the function (exception handler is checked for
types std::bad_alloc
, std::exception
, and catch-all handler).
The check assumes that any user-defined operator new
is either
noexcept
or may throw an exception of type std::bad_alloc
(or derived
from it). Other exception types or exceptions occuring in the objects’s
constructor are not taken into account.