#include <fstream>
#include <iostream>
#include <stdexcept>
using namespace std;
class FileNotFound: public logic_error
{
public:
explicit FileNotFound(const string& _Message):logic_error(_Message){}
};
int main()
{
try
{
ifstream file;
file.open("NoExistingFile");
if (file.fail())
throw FileNotFound("");
}
catch(const FileNotFound &e)
{
cout << "FileNotFound" << e.what();
}
catch(const exception &e)
{
cout << e.what();
}
return 0;
}
出力:FileNotFound
クリーンコード(ロバートマーチン)ですか?std::exceptionは「エラーの場所」を提供しません。Clean Code A Handbook of Agile Software Craftsmanship(Robert Martin)->第7章:エラー処理->コンテキストに例外を提供する