2

基本的に、私は Java、JRI (R for Java)、および RJDBC (JRI の助けを借りて) を使用していますが、これらはすべてうまく機能しています。今、私は自分のプログラムをできるだけ簡単にしたいと考えています。文字列 SQL_command はある種のゴミであり、実際には有効な SQL ステートメントではないとしましょう。その場合...

    re.eval("sql_data <- dbGetQuery(conn, \"" + SQL_command + "\")");

...うまくいかないはずです。私の考えは次のようになります。その R コマンドが失敗した場合、R に何らかの出力があります。すべてが正しい場合、出力はありません。しかし、その可能な出力をどのようにキャプチャできますか?

私の問題は、無効な R ステートメントをキャッチする方法に関するものであることを覚えておいてください。R の出力は必ずしも重要ではありませんが、とにかく面白いかもしれません。

前もって感謝します!

4

2 に答える 2

0

メソッドドキュメントにorg.rosuda.JRI.Rengine.eval(String)よると、null何か問題が発生した場合は が返されます。このメソッドはどのタイプの もスローしないExceptionため、問題の原因を特定する方法を提供していないようです。

org.rosuda.REngine.parseAndEval(String)メソッドはいくつかのException型をREngineExceptionスローし、REXPMismatchException失敗の詳細な説明を提供する可能性がありますが、これらがスローされる正確な理由と時期についてドキュメントは明確ではありません。

nullそのため、できる最善の方法は戻り値をチェックすることかもしれません。

于 2014-10-12T18:09:19.070 に答える