捕获所有异常的 catch(...) 子句应位于最后
9.6.4 ID_try_disorderedEllipsis
如果 catch(...) 子句排在前面,其后面的 catch 子句会失去作用。
示例:
try {
....
} catch (...) { // Non-compliant, disordered catch-all handler
....
} catch (E&) { // Unreachable
....
}
应改为:
try {
....
} catch (E&) {
....
} catch (...) { // Compliant
....
}
相关
依据
ISO/IEC 14882:2003 15.3(6)
ISO/IEC 14882:2011 15.3(5)
ISO/IEC 14882:2011 18.3(5)
参考
CWE-561
C++ Core Guidelines E.31
MISRA C++ 2008 15-3-7