我注意到tryCatch已经被try保护的函数(可以是来自库的函数,所以不能修改源代码)实际上并不能捕获错误。结果,在每次不确定的tryCatch之后,我最终都要检查“ try-error”。如果有任何解决方法我没有任何评论?
可重现的示例,其中失败时的foo是try-error对象,而不是我希望的-1或-2:
foo <- tryCatch({
try(notTheDroidzYouAreLookingFor())
}, warning = function(w) {
print("zwarning")
-2
}, error = function(e) {
print("zerror")
-1
})
print(foo)
# ending up doing following all the time
if (inherits(foo, "try-error")) {
print("tryCatching a try and then checking for try-error makes jack a dull boy")
foo <- -3
}
print(foo)