Static Analysis Problem Type Reference
A C++ constructor can throw an exception and there is at least one static/global instance of this class (or a class derived from this class).
This is unsafe usage because it can cause an exception to be thrown in a context where exceptions are not allowed, such as the static elaboration performed when an executable or a dynamic library is loaded. If an exception were thrown in such a context, the C++ runtime would cause the application to fail.
|
ID |
Code Location |
Description |
|---|---|---|
|
1 |
Exception throw |
This shows where the exception was thrown |
|
2 |
Definition |
This shows where the constructor was defined |
#include <stdio.h>
class Bomb { // bad class throws exception from constructor
public:
int x;
Bomb() : x(0) { throw "boom"; }
~Bomb() { }
};
// Variable declaration that will throw exception
// during static elaboration before main is called
Bomb myBomb;
int main(int argc, char **argv)
{
printf("hello, world\n"); // never gets here
}