- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下功能:
fun = function(expr) {
mc = match.call()
env = as.environment(within(
list(),
expr = eval(mc$expr)
))
return(env)
}
在 tryCatch()
中调用,以便妥善处理 expr
中的任何错误条件。
它在标准错误条件下工作正常:
tryCatch({
fun({
stop('error')
})
}, error = function(e) {
message('error happened')
})
# error happened
但是,它不会捕获 testthat
期望错误(这是我的特定用例的首选):
library(testthat)
tryCatch({
fun({
expect_true(FALSE)
})
}, error = function(e) {
message('expectation not met')
})
# Error: FALSE isn't true.
或更简单地说:
library(testthat)
tryCatch({
expect_true(FALSE)
}, error = function(e) {
message('expectation not met')
})
# Error: FALSE isn't true.
未捕获期望错误。
从 R 3.2.2 升级到 R 3.3.0 后出现此问题 - 即在 R 3.2.2 中发现了预期错误。
有没有办法让 R 3.3.0 中的 tryCatch()
捕获 testthat
期望?
最佳答案
我将调试器设置为 expect()
,然后单步执行几行代码(为简洁起见,对输出进行了编辑),并查看了发出信号的条件的类
> debug(expect)
> xx = expect_true(FALSE)
...
Browse[2]> n
debug: exp <- as.expectation(exp, ..., srcref = srcref)
Browse[2]>
...
Browse[2]> class(exp)
[1] "expectation_failure" "expectation" "condition"
Browse[2]> Q
> undebug(expect)
所以它不是类“错误”的条件,并且可以显式捕获
> tryCatch(expect_true(FALSE), expectation_failure=conditionMessage)
[1] "FALSE isn't true.\n"
您还可以捕获expectation
类。
重新启动可以让您继续,如果这在某种程度上很重要。
result <- withCallingHandlers({
expect_true(FALSE)
expect_true(!TRUE)
expect_true("this sentence")
}, expectation_failure=function(e) {
cat(conditionMessage(e))
invokeRestart("continue_test")
})
带输出
FALSE isn't true.
!TRUE isn't true.
"this sentence" isn't true.
> result
[1] FALSE
人们也可以捕获或处理成功
> tryCatch(expect_true(TRUE), expectation_success=class)
[1] "expectation_success" "expectation" "condition"
关于R tryCatch 和 testthat 期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870941/
考虑以下代码: test1 print(test1) [1] "b" > print(test2) [1] "b" 最佳答案 '<<-' 是为不属于 R 的副作用而设计的。永远不要使用它,或者只有在
我正在编写一个函数,该函数使用 kmeans 来确定 bin 宽度,以将连续测量值(预测概率)转换为整数(3 个 bin 之一)。我偶然发现了一个边缘情况,在这种情况下,我的算法可以(正确)预测整个集
我注意到 tryCatch 没有正确捕获以下错误:它不打印 TRUE,并且它不转到浏览器... 它可能是 tryCatch 函数中的错误吗? library(formattable) df1 = st
我对 R 很陌生,我对 tryCatch 的正确用法感到困惑.我的目标是对大型数据集进行预测。如果预测不适合内存,我想通过拆分我的数据来规避这个问题。 现在,我的代码大致如下: tryCatch({
myFunc <- function(x) { x <- timeSeries(x, charvec=as.Date(index(x))) t<-tryCatch( doSomething(
我尝试连接 2 个数据框:Eset2 和 Essential。它们共享 1 个包含基因名称的公共(public)列,并且两个框架都有唯一的行。 所以我决定在 Eset2 中查找我需要的值(RMA,AN
我想知道这是检查 tryCatch 函数类型的错误或警告的方法,例如在 Java 中。 try { driver.findElement(By.xpath(locator)).
我正在尝试使用 tryCatch 生成 p 值列表,矩阵中有几行没有足够的观察值来进行 t 检验。这是我到目前为止生成的代码: pValues <- c() for(i in row.names(co
我有一个 1000 行的数据框。我想要循环的代码非常简单 - 我只想将第 4 列中的所有值设为大写。我希望它能够在任何行中出现错误时跳过该行并继续执行其余行。 我写了这段代码: for(i in 1:
我有一段代码,其中使用 for 循环读取和分析文件列表。由于我必须分析多个文件,因此我想使用 tryCatch 来打印引发问题的文件的名称。我的文件的一个常见问题是缺少列名,我的意思是,它应该在文件中
这将输出“未发现错误!”两次, x .8) stop("oops") TRUE } g = function() { ## on error, warn user but contin
我正在解析大量网站并编写了一个脚本,该脚本循环遍历来自单独文件的数千个链接。但是,我遇到过有时 R 无法加载一个链接,它会在循环中间停止,从而导致许多其他 url 无法解析。所以我尝试使用 tryCa
我有一个 1000 行的数据框。我想要循环的代码非常简单 - 我只想将第 4 列中的所有值设为大写。我希望它能够在任何行中出现错误时跳过该行并继续执行其余行。 我写了这段代码: for(i in 1:
我正在使用 tryCatch捕捉发生的任何错误。但是,即使我捕获它们并返回适当的错误值,看起来我的批处理系统的日志中仍然报告错误。有没有办法完全抑制错误并简单地继续我提供的错误处理? 最佳答案 确保您
我有一段代码,其中使用 for 循环读取和分析文件列表。由于我必须分析多个文件,因此我想使用 tryCatch 来打印引发问题的文件的名称。我的文件的一个常见问题是缺少列名,我的意思是,它应该在文件中
import org.newdawn.slick.Image; import org.newdawn.slick.SlickException; public class Images { t
下面的tryCatch装饰器无法捕捉到错误。 const TryCatchWrapper = (target, key, descriptor) => { const fn = descripto
我在排列数据上运行 GLMM,对于其中一些我有收敛的错误消息。 由于这是我的空模型,我只需要重新采样这个特定的排列数据。 因此,我试图处理 R 的 tryCatch 函数,但我有一些失败。 我有 Pe
我试图在 for 循环中处理两个可能的错误,它调用 stplanr::dist_google与 API 交互。我知道错误,所以我想在它们发生时采取具体的行动。 如果我尝试仅处理可能的错误之一,它会起作
我有一个函数: buggy buggy() Error in tryCatchList(expr, classes, parentenv, handlers) : I don't like gr
我是一名优秀的程序员,十分优秀!