Il est parfois nécessaire de gérer les messages d’erreur dans son programme. C’est ce que nous allons voir dans tutoriel.

 

Les instructions « try » et « catch »

Quand on s’attend à une erreur d’exécution, try … catch permet de tester l’exécution d’un groupe d’instructions (entre try et catch). En cas d’erreur, l’exécution s’interrompt et un autre groupe d’instructions est exécuté (entre catch et end)

On peut régénérer l’erreur avec l’instruction rethrow(lasterror).

try
statements
catch exception
statements
end

 

L’exemple suivant permet de gérer le message d’erreur suite à la concaténation de deux matrices de dimension différente.

A = rand(3);
B = ones(5);

try
    C = [A; B];
catch err
    
    % plus informations sur l'erreur
    if (strcmp(err.identifier,'MATLAB:catenate:dimensionMismatch'))
        
        msg = ['Problème de dimension : Premier argument a ', ...
            num2str(size(A,2)), ' colonnes alors que le second à ', ...
            num2str(size(B,2)), ' colonnes.'];
        error('MATLAB:monCode:dimensions', msg);
        
        % Afficher les autres erreurs comme d'habitude
    else
        rethrow(err);
    end
    
end

 

L’exécution donne :

>> exemple_try_catch
Error using exemple_try_catch (line 14)
Problème de dimension : Premier argument a 3 colonnes alors que le second à 5 colonnes.

 

L’instruction « error »

L’instruction error permet d’arrêter un programme et d’afficher un message d’erreur. La syntaxe est error(‘ message d »erreur ‘).

 

Dans l’exemple suivant, nous demandons de générer un message d’erreur à la cinquième itération de la boucle for.

function x = ncarres_error
n = 10;
x = [];
for i = 1:n
    if i==5
        error(' Erreur à la cinquième itération ')
    end
  x = [x, i^2];
end
disp('fin'):

 

L’exécution donne :

>> ncarres_error
Error using ncarres_error (line 8)
Erreur à la cinquième itération

 

Identifiant de message d’erreur

Vous pouvez ajouter un identifiant au message d’erreur.

Cet identifiant est composé d’un composant (component) et d’un mnémonique (mnemonic)

n = 19; 
if n>=10
error('MaBoiteAOutils:GénérationValeur', 'n doit être inférieur à 10 !\nVotre nombre est %d', n); 
end

n doit être inférieur à 10 !
Votre nombre est 19

 

La commande « lasterr » permet de récupérer la dernière erreur sous MATLAB. Cette fonction est utile pour préciser l’erreur selon le contexte, en français, par exemple.

>> [Msg, Id] = lasterr

Msg =

n doit être inférieur à 10 !
Votre nombre est 19

Id =

MaBoiteAOutils:GénérationValeur
  • Msg : message d’erreur
  • Id : identifiant du message

 

L’instruction « warning »

L’instruction warning permet d’afficher un message de mise en garde sans suspendre l’exécution du programme.

La syntaxe est warning(‘ message de mise en garde ‘). Il est possible d’indiquer à MATLAB de ne pas afficher les messages de mise en garde d’un programme en tapant warning off dans la fenêtre de commandes. On rétablit l’affichage en tapant warning on.

 

Dans l’exemple suivant, nous demandons de générer un message d’erreur à la cinquième itération de la boucle for.

function x = ncarres_warning
n = 10;
x = [];
for i = 1:n
    if i==5
        warning(' warning à la cinquième itération ')
    end
  x = [x, i^2];
end
disp('fin'):

 

L’exécution donne :

>> ncarres_warning
Warning:  warning à la cinquième itération  
> In ncarres_warning at 8 
fin

ans =

     1     4     9    16    25    36    49    64    81   100

 

La fonction lastwarn renvoie le dernier message

 

Gestion de l’affichage des avertissements

Afficher les avertissements d’un type donné :

warning('On', 'MaBoiteAOutils:ParamNegatif');

Ne pas afficher les avertissements d’un type donné :

warning('Off', 'MaBoiteAOutils:ParamNegatif');

Afficher le mode d’affichage d’un type d’avertissements :

warning('Query', 'MaBoiteAOutils:ParamNegatif');

Ne plus afficher aucun avertissement :

warning('Off', 'all');

Ne plus afficher le dernier avertissement :

warning('Off', 'last');