gpt4 book ai didi

r - 为什么 tryCatch 在被要求生成警告时不返回警告?

转载 作者:行者123 更新时间:2023-12-02 01:11:18 27 4
gpt4 key购买 nike

检查以下示例:

library(testthat)
expect_warning(tryCatch(stop("Error!"), error = function(e) warning(e)))
## Error: tryCatch(stop("Error!"), error = function(e) warning(e)) showed 0 warnings
## In addition: Warning message:
## In doTryCatch(return(expr), name, parentenv, handler) : Error!

为什么 testthat 说没有警告?

使用 withWarnings function discussed in here也没有显示警告的迹象。为什么 tryCatch 在被要求时不产生警告?

最佳答案

您创建了对 doTryCatchwithCallingHandlers 的嵌套调用。问题在于 e 不是一个字符,而是一个 simpleError 对象(其中包含对 doTryCatch 的另一个调用)。以下内容有些管用,但显示了引发警告的实际上下文:

tryCatch(stop("Error!"), error = function(e) warning(e[[1]]))
#Warning message:
#In value[[3L]](cond) : Error!
library(testthat)
expect_warning(tryCatch(stop("Error!"), error = function(e) warning(e[[1]])))
#no further output

关于r - 为什么 tryCatch 在被要求生成警告时不返回警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45166258/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com