MISRA C++:2008 Rule 15-5-3
The terminate() function shall not be called implicitly
説明
ルール定義
The terminate() function shall not be called implicitly 1
Polyspace 実装
チェッカーは、関数 std::terminate() を暗黙的に呼び出す結果となる可能性がある状況にフラグを設定します。このような状況には以下が含まれます。
例外がキャッチされずにエスケープする。これは、
MISRA C++:2008 Rule 15-3-2にも違反します。次に例を示します。例外がキャッチされる前に、キャッチされていない例外をスローする別の関数によって例外がエスケープする。たとえば、catch ステートメントまたは例外ハンドラーが、キャッチされていない例外をスローするコピー コンストラクターを呼び出します。
空の
throw式により、キャッチされない例外が再発生します。
クラス デストラクターが例外を発生する。デストラクターでの例外は、
MISRA C++:2008 Rule 15-5-1にも違反します。std::atexitに渡される終了ハンドラーにより未処理例外が発生する。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Exception Handling |
| カテゴリ: 必要 |
バージョン履歴
R2018a で導入1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.