Gérer les erreurs

TP

Auteur·rice
Affiliation

Frédéric Santos

CNRS, Univ. Bordeaux, MCC – UMR 5199 PACEA

Pour les utilisateurs finaux du package, il est très utile de disposer de messages d’erreur explicites lorsque les choses se passent mal. Voyons rapidement dans cette section comment retourner des messages d’erreur et vérifier la conformité des arguments d’entrée d’une fonction.

1 Créer des messages d’erreur explicites

En R, si le code d’une fonction rencontre une instruction stop(), l’exécution s’arrête et produit un message d’erreur. Le message d’erreur qui s’affichera dans la console R sera précisément la chaîne de caractères passée en argument de la fonction stop(). Par exemple, considérons le cas simple suivant :

## Fonction n'acceptant pas de valeur supérieure à 10 :
g <- function(x) {
    if (x > 10) {
        stop("x must be inferior or equal to 10")
    }
    return(x)
}

## Produire le message d'erreur en passant 11 en argument :
g(11)
Error in g(11): x must be inferior or equal to 10

Exercice. À la lumière de l’exemple ci-dessus, améliorons la fonction ccc().

  1. Modifier le code de ccc() pour vérifier que les deux arguments d’entrée x et y ont la même longueur. Si ce n’est pas le cas, un message d’erreur explicite devra être renvoyé.
  2. Vérifier rapidement le bon fonctionnement de cette nouvelle version de ccc().
  3. Effectuer un commit pour documenter cette nouvelle étape du développement.

2 Vérifier la conformité des arguments d’entrée

Un autre usage incorrect de la fonction ccc() serait de soumettre à l’argument variant une valeur différente des deux valeurs autorisées dans la documentation (n et unbiased). En R, le rôle de l’instruction match.arg est de retourner automatiquement des messages d’erreur explicites dans de telles situations.

Considérons l’exemple simple suivant :

## Fonction n'acceptant que trois couleurs :
h <- function(color = c("bleu", "vert", "rouge")) {
    color <- match.arg(color)
}

## Fournir un argument incorrect à cette fonction :
h("mauve")
Error in match.arg(color): 'arg' should be one of "bleu", "vert", "rouge"

Exercice. À la lumière de l’exemple ci-dessus, améliorons une nouvelle fois la fonction ccc().

  1. Modifier le code de ccc() pour vérifier que l’argument variant est bien égal à n ou unbiased, à l’exclusion de toute autre valeur.
  2. Vérifier rapidement le bon fonctionnement de cette nouvelle version de ccc().
  3. Effectuer un commit pour documenter cette nouvelle étape du développement.
Retour au sommet