未処理の例外のソースを明らかにする
プログラムの実行中に例外が発生した場合、その原因を追跡することはトラブルシューティングにとって非常に重要です。例外メッセージに明示的なコード行情報が埋め込まれていない場合、未処理の外部例外によって開発者は困惑する可能性があります。
カスタム例外とマクロの詳細
この課題に対処するための堅牢な解決策には、カスタム例外クラスの作成とマクロの利用が含まれます。
my_Exception クラスは std::runtime_error クラスを拡張し、例外メッセージを保存するための追加の msg メンバーを組み込みます。このクラスのコンストラクターは、ソース ファイル、行番号、および元の例外引数を連結することによってメッセージを構築します。
次に、 throw_line マクロは、行情報を使用して例外をスローするプロセスを簡略化します。これは例外メッセージを表す引数を受け取り、ファイルと行番号の詳細を my_Exception オブジェクトに自動的に追加します。
実行
次のコード スニペットを考えてみましょう。
void f() { throw_line("Oh no!"); } int main() { try { f(); } catch (const std::runtime_error &ex) { std::cout << ex.what() << std::endl; } }
f 関数内で例外がスローされると、throw_line マクロは例外メッセージ (「Oh no!」) と例外が発生した行番号の両方を提供します。この情報には、my_Exception オブジェクトの what() メソッドを通じてアクセスできます。
このアプローチを利用することで、開発者は、例外がハンドルされないソースや外部ソースから発生した場合でも、例外のソースを正確に特定する貴重なツールを入手できます。
以上が未処理の例外を特定する方法: カスタム例外とマクロの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。