The analyzer has detected an exception thrown by pointer. A more common practice is to throw exceptions by value and catch them by reference. When thrown by pointer, an exception may never be caught as it is supposed to be caught by reference. In addition, the catching part will have to call the 'delete' operator to destroy the object created to avoid a memory leak.
Consider the following example:
throw new std::runtime_error("error");
Throwing an exception by pointer is not a mistake in itself, of course. Such exceptions can be properly caught and handled. But in practice, this is inconvenient and leads to errors. The arguments against throwing exceptions by pointer are as follows:
So, throwing exceptions by pointer can be considered an anti-pattern, which should be rewritten into correct code.
According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-755.
You can look at examples of errors detected by the V1022 diagnostic.