
...
If no matching handler is found, the function
std::terminate()
is called; whether or not the stack is unwound before this call tostd::terminate()
is implementation-defined.
The default terminate handler called by std::terminate()
calls std::abort()
, which abnormally terminates the process. When std::abort()
is called, or if the implementation does not unwind the stack prior to calling std::terminate()
, destructors for objects may not be called and external resources can be left in an indeterminate state. Abnormal process termination is the typical vector for denial-of-service attacks. For more information on implicitly calling std::terminate()
, see ERR50-CPP. Do not abruptly terminate the program.
...
Tool | Version | Checker | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Astrée |
| main-function-catch-all early-catch-all | Partially checked | ||||||||||
Axivion Bauhaus Suite |
| CertC++-ERR51 | |||||||||||
CodeSonar |
| LANG.STRUCT.UCTCH | Unreachable Catch | ||||||||||
Helix QAC |
| C++4035, C++4036, C++4037 | |||||||||||
Klocwork |
| MISRA.CATCH.ALL | |||||||||||
LDRA tool suite |
| 527 S | Partially implemented | ||||||||||
Parasoft C/C++test |
| CERT_CPP-ERR51-a | Always catch exceptions | ||||||||||
Polyspace Bug Finder |
| CERT C++: ERR51-CPP | Checks for unhandled exceptions (rule partially covered) | PRQA QA-C++ | |||||||||
Include Page | PRQA QA-C++_V | PRQA QA-C++_V | |||||||||||
4035, 4036, 4037 | RuleChecker |
| main-function-catch-all early-catch-all | Partially checked |
...