我想编写trycatch
代码来处理从web下载时出现的错误。
url <- c(
"http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html",
"http://en.wikipedia.org/wiki/Xz")
y <- mapply(readLines, con=url)
这两个语句运行成功。下面,我创建一个不存在的网址:
url <- c("xxxxx", "http://en.wikipedia.org/wiki/Xz")
url[1]
不存在。如何编写trycatch
循环(函数),以便:
R使用函数实现try catch块:
语法有点像这样:
在tryCatch()中,有两个“条件”可以处理:“警告”和“错误”。在编写每个代码块时,要理解的重要一点是执行状态和范围。 @source
tryCatch
有一个稍微复杂的语法结构。但是,一旦我们理解了构成完整tryCatch调用的4个部分,就很容易记住:expr:[需要评估的]R代码
错误:[可选]在计算expr中的代码时,如果发生错误,应运行什么
警告:[可选]在计算expr中的代码时,如果出现警告,应运行什么
最后:[可选的]退出tryCatch调用之前应该运行什么,而不管expr是否成功运行、是否有错误或警告
因此,一个玩具示例,计算一个值的日志可能看起来像:
现在,运行三个案例:
有效案例
一个“警告”案例
一个“错误”案例
我写了一些我经常使用的有用的用例。在此处查找更多详细信息:https://rsangole.netlify.com/post/try-catch/
希望这对你有帮助。
那么:欢迎来到R世界;-)
给你
设置代码
应用代码
调查输出
附加说明
尝试匹配
tryCatch
返回与执行expr
相关联的值,除非有错误或警告。在这种情况下,可以通过提供相应的处理函数(参见?tryCatch
中的参数error
和warning
)来指定特定的返回值(参见上面的return(NA)
)。这些函数可以是已经存在的函数,但是您也可以在tryCatch()
中定义它们(如我在上面所做的)。选择处理函数的特定返回值的含义
由于我们已经指定在出错时返回
NA
,所以y
中的第三个元素是NA
。如果我们选择NULL
作为返回值,那么y
的长度应该是2
,而不是3
,因为lapply()
只会“忽略”返回值NULL
。还要注意,如果不通过return()
指定显式返回值,则处理程序函数将返回NULL
(即,在出现错误或警告条件的情况下)。“意外”警告消息
由于
warn=FALSE
似乎没有任何效果,所以抑制警告的另一种方法是使用而不是
多个表达式
请注意,如果您将多个表达式用花括号括起来(就像我在
finally
部分中所示),则还可以将它们放在“实际表达式部分”(参数expr
的tryCatch()
)中。相关问题 更多 >
编程相关推荐