The analyzer has detected a strange use of the std::exception class or derived class. The analyzer generates this warning when an object of the std::exception / CException type is created but not being used.
if (name.empty()) std::logic_error("Name mustn't be empty");
The error is this: the key word 'throw' is missing by accident. As a result, this code does not generate an exception in case of an error. This is the fixed code:
if (name.empty()) throw std::logic_error("Name mustn't be empty");
According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-390.
You can look at examples of errors detected by the V596 diagnostic.