3
私は機能があります。ネストされたtryCatchはエラーをキャッチしませんか?
buggy <- function(...) {
tryCatch({
itWorked <- FALSE
stop("I don't like green eggs and ham!")
itWorked <- TRUE
}, finally = {
if (itWorked)
return("I do, Sam I am")
else
return("I do not like them, Sam I am!")
})
}
基本的には、buggy
がまたは(itWorked
によって決定成功しない可能性があり、いくつかの計算を行うためにしようとしfinally
句は、単に計算は、何かを動作しなかった場合でも、ことを確認します。("I do not like them, Sam I am!"
、このケースでは)返される
期待通りに動作します:
> buggy()
Error in tryCatchList(expr, classes, parentenv, handlers) :
I don't like green eggs and ham!
[1] "I do not like them, Sam I am!"
は今、私はのエラーを聴きたいです:
tryCatch(buggy(),
error=function(e) message('too bad! there was an error'))
buggy
の誤差が周囲のtryCatch
でエラーを発生させることができないしかし:
> tryCatch(buggy(),
+ error=function(e) message('too bad! there was an error'))
[1] "I do not like them, Sam I am!"
私は、これは言うことを期待する:
'too bad! there was an error'
[1] "I do not like them, Sam I am!"
誰が、なぜ教えてもらえますこれは動作しません?どういうわけかbuggy
の中からエラーを「発生させる」必要がありますか?
おおを、私は参照してください。 'buggy'がエラー時に値を返すための標準的な手順は何ですか(私の場合は中間段階ですが、私はまだ使用できますが再計算する必要はありません)。エラーが発生しました(したがって、返された結果は最後のものではなく中間です)。 –
私はちょうど言ったことを忘れて、私はちょうど私の*特定のケースでは、私は(最終的には)私はパラメータ(return.intermediate.on.error')を持っていることに気づいた: 'if(itWorked || return。 (reason_for_failure)} 'の中に' reason_for_failure'を格納しなければならないと思います。それは "Rの方法"と思われません。次のように言うといいでしょう: 'error = function(e){raise_error();リターン(...)} '。 –
あなたの目的に合った 'warning()'を使って警告を出す( 'stop()'の代わりに)エラーを出すでしょうか?何かが間違っているというメッセージで通知されたがっているように聞こえるので、最も簡単な解決策になる可能性があります。 –