これは他のいくつかの質問に関連していますが、答えを適用する方法がわからないようなので、新しい質問をしています。
次のようなコードから、有益でないエラーを見つけようとしています。
tryCatch(MainLoop(),
error=function(e) { fatal(lgr, paste('caught fatal error:', as.character(e)));
exit.status <<- 1 })
問題は、エラーがライブラリ関数に埋め込まれている何かに関連しているように見えることです:
Error in nrow(x): (subscript) logical subscript too long
上記の C レベルのエラーは、どの呼び出しでも発生しないタイプのインデックス作成にのみ適用されるため、これnrow
は私のコードにはありませんnrow
。
だから私はその中からスタックトレースを取得したいと思っていますtryCatch
。類似の問題を次に示します。
x <- function() { y(); }
y <- function() { z(); }
z <- function() { stop("asdf") }
> x()
Error in z() : asdf
> tryCatch(x(), error=function(e) { print(conditionCall(e)) } )
z()
> tryCatch(x(), error=function(e) { dump.frames() } )
> last.dump
$`tryCatch(x(), error = function(e) {
dump.frames()
})`
<environment: 0x1038e43b8>
$`tryCatchList(expr, classes, parentenv, handlers)`
<environment: 0x1038e4c60>
$`tryCatchOne(expr, names, parentenv, handlers[[1]])`
<environment: 0x1038e4918>
$`value[[3]](cond)`
<environment: 0x1038ea578>
attr(,"error.message")
[1] "asdf"
attr(,"class")
[1] "dump.frames"
への呼び出しを含むスタック トレースを取得するにはどうすればよいy()
ですか? 使用を中止する必要がありtryCatch
ますか? より良い方法は何ですか?