r - 使用 tryCatch 和 source

标签 r error-handling try-catch

假设我有两个 R 文件:correct.Rbroken.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 的方式意味着我必须审问xy对象来确定是否有错误。

有没有更好的方法来做到这一点?

问题来自教学。 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/

相关文章:

r - 将对象添加到包命名空间

r - 按行号将数据帧拆分为数据帧列表

java - 不兼容的类型 : void cannot be converted to string

python - 循环时不离开

java - 调用方法时出现错误

c++ - 在 C++ 中使用 Rcpp header

r - 从 SPELL 数据创建序列对象

java - 在 Java catch block 中,您如何知道哪个方法/行抛出异常?

javascript - 在 try catch 操作期间*究竟*发生了什么?

java - 这不应该起作用吗?显示来自 servlet 的错误消息