假设我有两个 R 文件:correct.R
和 broken.R
.使用 tryCatch
的最佳方式是什么?检查错误?
目前,我有
> x = tryCatch(source("broken.R"), error=function(e) e)
> x
<simpleError in source("broken.R"): test.R:2:0: unexpected end of input
1: x = {
^>
> y = tryCatch(source("correct.R"), error=function(e) e)
> y
$value
[1] 5
$visible
[1] FALSE
但是,我构建
tryCatch
的方式意味着我必须审问x
和 y
对象来确定是否有错误。有没有更好的方法来做到这一点?
问题来自教学。 100 名学生上传他们的 R 脚本,我运行这些脚本。说得好一点,我打算创建一个简单的函数来确定它们的函数来源是否正确。它只需要返回 TRUE 或 FALSE。
最佳答案
尝试这个:
> tryCatch(stop("foo"), error = function(e) {
+ cat(e$message, "\n")
+ FALSE
+ })
foo
[1] FALSE
或者,您应该考虑 Hadley 的
testthat
包裹:> expect_that(stop("foo"), is_a("numeric"))
Error in is.vector(X) : foo
关于r - 使用 tryCatch 和 source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218945/