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 occurring in the object’s constructor are not taken into account.