Utilisez la fonction tryCatch pour la gestion des conditions dans R

Jinku Hu 16 juillet 2021
Utilisez la fonction tryCatch pour la gestion des conditions dans R

Cet article présentera plusieurs méthodes d’utilisation de la fonction tryCatch pour la gestion des conditions dans R.

Utilisez tryCatch pour gérer les conditions d’erreur dans R

Trois types de conditions intégrées sont fournies dans le langage R, qui peuvent être levées en tant qu’exceptions du code. Classiquement, les plus graves sont appelées erreurs, ce qui met généralement fin à la fonction ou à l’arrêt de l’exécution. Ensuite, il y a des avertissements, qui indiquent si une erreur se produit lors de l’exécution de la fonction, mais il est capable de gérer le problème partiellement. Enfin, nous avons des messages qui sont utilisés pour informer l’utilisateur de certains problèmes mineurs. Ces trois conditions ont des fonctions correspondantes nommées stop, warning et message, qui peuvent être invoquées pour lever la condition donnée.

f1 <- function(x) {
  cat("log(", x, ") = ", (log(x)))
}

f1(10)

Production:

log( 10 ) = [1] 2.302585

Par exemple, le code précédent définit une fonction nommée f1 qui prend un seul argument x et affiche le résultat log(x) avec un formatage supplémentaire. Notez que si l’utilisateur passe un argument non numérique à la fonction f1, il renvoie une erreur. Nous pouvons gérer cette erreur en enregistrant le gestionnaire avec la fonction tryCatch.

f1 <- function(x) {
  cat("log(", x, ") = ", (log(x)))
}

f1("f")

Production:

Error in log(x) : non-numeric argument to mathematical function

Notez que l’enregistrement du gestionnaire signifie que nous remplaçons le code par défaut de cette erreur par celui fourni par l’utilisateur. L’exemple suivant montre comment le message d’erreur par défaut est remplacé par la chaîne de sortie personnalisée. Pendant ce temps, la fonction suivante se comporte normalement si la condition d’erreur n’est pas levée.

f1 <- function(x) {
  tryCatch(
    error = function(cnd) "The custom output that we need to print",
    cat("log(", x, ") = ", (log(x)))
  )
}

f1("f")

Production:

[1] "The custom output that we need to print"

L’usage courant de la fonction tryCatch est d’implémenter un bloc de code qui doit s’exécuter lorsque la condition d’erreur est levée. Nous spécifions le bloc de code qui s’exécute lorsqu’une erreur est levée dans les accolades après la ligne error = function(cnd). Les lignes suivantes après le bloc de code d’erreur sont généralement exécutées lorsque le gestionnaire est actif.

f1 <- function(x) {
  tryCatch(
    error = function(cnd) {
      print("hello")
      log(10)
    },
    cat("log(", x, ") = ", (log(x)))
  )
}

f1("x")

Production:

[1] "hello"
[1] 2.302585
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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