2

特定の XML ファイルが有効かどうか (適切な構文と構造を持っているかどうか) を判断しようとしており、Xerces を使用しています。適切なファイルを正常に読み取ることができましたが、構文が正しくないファイルを指定してもエラーはスローされません。

私は釣りをしていて、従来の例外処理setErrorHandlerの代わりにエラーハンドラーとユーザーを使用してエラーをキャッチする必要があるかもしれないことがわかりました。try-throw-catch

私が抱えている問題は、適切なハンドラーを宣言し、それをパーサーに設定し、エラーが表示された場合はエラーを読み取る方法が非常に混乱していることです。

誰かが私の状況に光を当てる可能性はありますか?

// @input_parameter from function: const string & xmlConfigArg 

xercesc::DOMDocument* doc = NULL;

string xmlConfig(xmlConfigArg);

 Handler handler; // I'm not sure what type of handler to use
_parser->setErrorHandler(&handler);
try{
    _parser->parse(xmlConfigArg.c_str());
doc = _parser-> getDocument();
}catch(...){
    //Nothing is ever caught here
}
4

1 に答える 1

5

ErrorHandler (< xercesc/sax/ErrorHandler.hpp >)からクラスを派生させ、そこにあるすべての仮想メソッドを上書きする必要があります。その後、作成したクラスからエラーコードを取得できます。解析で例外がスローされることはないため、try/cache ブロックをウェーブすることができます (または、別の用途のために保持します)。

于 2013-02-07T17:19:59.633 に答える