HackerNews

C++の例外に関する問題

Problems with C++ exceptions

https://marler8997.github.io/blog/bjarne-fix-your-language/


この記事では、C++における例外処理の問題点について議論されています。著者は、Bjarne Stroustrup氏がプレゼンテーションで示したファイルハンドリングの例を用いて、リソースのクリーンアップが容易に見逃される可能性を示します。RAII(Resource Acquisition Is Initialization)を利用することで、リソース管理の改善が図られますが、例外処理に関連する問題もいくつか存在します。具体的には、キャッチした例外の型が正しいか不明で、すべての例外をキャッチできているかどうかもわからず、例外処理には新たなスコープが必要になることが挙げられます。著者は、通常のエラー処理方法として、エラーメッセージを表示し、関数から戻る方法が望ましいと述べており、古典的なC言語のエラーハンドリングとC++での例外処理の利点と欠点を比較しています。最終的に、RAIIだけではなくRAISI(Resource Acquisition Is Second Initialization)が必要となり、状況に応じたさらなる工夫が求められると結論付けています。