私は機能を持っています:
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!"
今、私はエラーをリッスンしたいbuggy()
:
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
か?