C++でException継承した例外クラスをcatchした際にその例外が発生した箇所(source codeの行数)を出力させたいのですが可能でしょうか?
javaのhrowable.printStackTraceみたいなも関数ってないのでしょうか
ご教示よろしくお願いします。
・Windows のデバッガ用の API 等を使えば、できなくはない。
(UNIX はまた別の手段でできなくはない)
・Java のような簡単な関数はない。
スタックトレースはStackWalkあたりを使わないとできません。
単純に例外発生箇所の行番号が知りたいのであれば、
例外クラスに行番号情報を含めてはいかがでしょうか?
私は自前で例外クラスを作って、
マクロを使って行番号なんかを展開してます。
class MyException
{
protected:
int _Line;
_TCHAR* _File;
public:
MyException( int Line, _TCHAR* File) : _Line(Line), _File(File) {}
virtual ~MyException() {}
int Line() const {
return _Line;
}
const _TCHAR* File() const {
return _File;
}
};
#define THROW_MY_EXCEPTION() throw MyException(__LINE__, _T(__FILE__))
といった感じです。
例外クラスに発生箇所の行番号情報を含めてみます。
ありがとうございました。
ツイート | ![]() |