📅  最后修改于: 2023-12-03 15:35:22.636000             🧑  作者: Mango
在 R 编程语言中,try-catch 是一种处理错误的方式。当代码发生错误时,R 通常会抛出一个错误并停止程序的执行。但是,在使用 try-catch 时,程序不会停止,而是执行指定的操作以处理错误。
try 是该语言中的一个函数,其语法如下:
try(expressions, silent = FALSE)
它接受两个参数:
expressions
:要执行的表达式。silent
:默认为 FALSE;如果设置为 TRUE,则遇到错误时不会显示错误。try 函数尝试执行表达式,并在出现错误时停止执行并返回错误信息。以下为一个示例:
result <- try(sqrt("a"))
在这个示例中,sqrt 函数期望一个数值作为参数,但作为字符串传递的参数会抛出错误。当这个参数传递给 try 函数时,它会尝试执行 sqrt("a") 表达式,但会在运行时抛出一个错误。它会显示错误,并将 result 变量的值设置为一个类似于以下的对象:
class(result)
#> [1] "try-error"
catch 是 try-catch 的第二个元素,其语法如下:
tryCatch({
expr
}, warning = function(w) {
expr
}, error = function(e) {
expr
}, finally = {
expr
})
catch 定义了要执行的操作,如果任何错误都被捕获,则会执行 catch 中指定的操作。catch 语句由四个部分组成:
warning
参数定义了一个函数,该函数在捕获到警告时执行。error
参数定义了一个函数,该函数在捕获到错误时执行。finally
参数定义了一个函数,该函数无论发生什么情况都会执行。以下是一个实际的 catch 代码块:
tryCatch({
result <- sqrt("a")
cat("The result is", result, "\n")
}, warning = function(w) {
cat("Warning:", conditionMessage(w), "\n")
}, error = function(e) {
cat("Error:", conditionMessage(e), "\n")
}, finally = {
cat("End of execution \n")
})
如果结果变量中包含 try 函数运行时抛出的错误,则会在 catch 语句的 error
部分执行。如果结果变量中包含警告,则会在 warning
部分执行。如果没有错误,则 catch 语句中的代码将在 finally
部分中执行。
try-catch 是处理错误的另一种方式,它使程序员可以控制在R发生错误时要执行的操作。尽管不是完美的,但 try-catch 代码块为程序员提供了更大的灵活性和更好的控制权。