Use a função tryCatch para tratamento de condições em R
Este artigo irá demonstrar vários métodos de uso da função tryCatch
para tratamento de condições em R.
Use tryCatch
para lidar com condições de erro em R
Três tipos de condições integradas são fornecidos na linguagem R, que podem ser lançados como exceções do código. Convencionalmente, os mais graves são chamados de erros, que geralmente encerram a função ou a execução é interrompida. Em seguida, há avisos, que indicam se algum erro ocorre durante a execução da função, mas é capaz de lidar com o problema parcialmente. Por fim, temos mensagens que são usadas para informar sobre alguns problemas leves ao usuário. Estas três condições têm funções correspondentes denominadas stop
, warning
e message
, que podem ser invocadas para aumentar a condição dada.
f1 <- function(x) {
cat("log(", x, ") = ", (log(x)))
}
f1(10)
Resultado:
log( 10 ) = [1] 2.302585
Por exemplo, o código anterior define uma função chamada f1
que recebe um único argumento x
e imprime o resultado log(x)
com alguma formatação adicional. Observe que se o usuário passar um argumento não numérico para a função f1
, ele gerará um erro. Podemos lidar com esse erro registrando o manipulador com a função tryCatch
.
f1 <- function(x) {
cat("log(", x, ") = ", (log(x)))
}
f1("f")
Resultado:
Error in log(x) : non-numeric argument to mathematical function
Observe que registrar o manipulador significa que substituímos o código padrão desse erro pelo fornecido pelo usuário. O exemplo a seguir demonstra como a mensagem de erro padrão é substituída pela string de saída customizada. Enquanto isso, a função a seguir se comporta normalmente se a condição de erro não for levantada.
f1 <- function(x) {
tryCatch(
error = function(cnd) "The custom output that we need to print",
cat("log(", x, ") = ", (log(x)))
)
}
f1("f")
Resultado:
[1] "The custom output that we need to print"
O uso comum da função tryCatch
é implementar um bloco de código que precisa ser executado quando a condição de erro é lançada. Especificamos o bloco de código que é executado quando um erro é gerado nas chaves após a linha error = function(cnd)
. As linhas a seguir após o bloco de código de erro geralmente são executadas quando o manipulador está ativo.
f1 <- function(x) {
tryCatch(
error = function(cnd) {
print("hello")
log(10)
},
cat("log(", x, ") = ", (log(x)))
)
}
f1("x")
Resultado:
[1] "hello"
[1] 2.302585
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook