MISRA C++:2008 Rule 15-3-7
Where multiple handlers are provided in a single try-catch statement or function-try-block, any ellipsis (catch-all) handler shall occur last
Description
Rule Definition
Where multiple handlers are provided in a single try-catch statement or function-try-block, any ellipsis (catch-all) handler shall occur last.
Rationale
In a try-catch statement or function-try block, the compiler matches the raised
exception with a catch()
handler. The catch(…)
handler matches any exception. Handlers after the catch-all handler within the same
try-catch statement or function try-block are ignored by the compiler during the
exception handling process and are unreachable code.
Having a handler after the catch-all handler might result in developer confusion as to why certain intended handlers are not being executed. Likewise, the catch-all handler might not handle the exception in the way the developer intends, resulting in confusion.
Polyspace Implementation
Polyspace® raises this defect whenever a handler appears after the catch-all handler within the try-catch statement or function try-block.
Troubleshooting
If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
Group: Exception Handling |
Category: Required |
Version History
Introduced in R2013b