📜  try catch in - R 编程语言(1)

📅  最后修改于: 2023-12-03 15:35:22.636000             🧑  作者: Mango

Try-Catch in R 编程语言

在 R 编程语言中,try-catch 是一种处理错误的方式。当代码发生错误时,R 通常会抛出一个错误并停止程序的执行。但是,在使用 try-catch 时,程序不会停止,而是执行指定的操作以处理错误。

Try

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

catch 是 try-catch 的第二个元素,其语法如下:

tryCatch({
  expr
}, warning = function(w) {
  expr
}, error = function(e) {
  expr
}, finally = {
  expr
})

catch 定义了要执行的操作,如果任何错误都被捕获,则会执行 catch 中指定的操作。catch 语句由四个部分组成:

  1. tryCatch 函数将被执行的代码用大括号括起来。
  2. warning 参数定义了一个函数,该函数在捕获到警告时执行。
  3. error 参数定义了一个函数,该函数在捕获到错误时执行。
  4. 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 代码块为程序员提供了更大的灵活性和更好的控制权。