Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
try
mot clé de début du bloc try dans une instruction de contrôle try-catch
catch
mot clé de début du bloc catch dans une instruction de contrôle try-catch
Séquence d'appel
try statements catch statements end
Description
L'instruction de contrôle
try
-catch
peut être utilisée pour
controler les conséquences d'une erreur d'exécution en permettant
l'exécution de code spécifique en cas d'erreur.
Quand une instruction de contrôle
try
-catch
est exécutée, normalement
seules les instructions comprises entre les mots clés
try
et catch
sont exécutées.
Cependant, si une erreur se produit pendant l'exécution de ces
instructions, l'erreur est mémorisée, les instructions restantes jusqu'au
mot clé catch
sont ignorées et les instructions
comprises entre les mots clés catch
et
end
sont exécutées en utilisant le mode de gestion des
erreurs par défaut.
L'erreur mémorisée peut être retrouvée en utilisant la fonction lasterror.
Les intructions comprises entre les mots clés
catch
et end
peuvent être omises
ainsi que le mot clé catch
si aucun code alternatif
n'est fourni.
Notez que l'on peut aussi utiliser la fonction execstr avec l'argument
'errcatch'
pour gérer les erreurs et tout
particulièrement pour gérer les erreurs de syntaxe.
Notez également que try-catch
est plus ou moins
similaire à :
if execstr("<instructions du bloc try>","errcatch")<>0 then <instructions du bloc catch> end
Il utilise le même mécanisme interne que "errcatch". C'est pourquoi execstr(...,"errcatch")
ne peut pas être utilisé à l'intérieur d'une structure
try
-catch
. Un tel contexte est
détecté et génère un message d'erreur spécifique (cette erreur est masquée
et mémorisée comme n'importe quelle autre erreur si elle se produit dans
le bloc try
).
Par contre plusieurs structures
try
-catch
peuvent être imbriquées
les unes dans les autres (voir le deuxième exemple ci-dessous).
Exemples
// premier exemple file_path=TMPDIR+'/wrong' try u=mopen(file_path,'r') x=mget(10,'c',u) catch disp(['le fichier '+file_path+ 'ne peut pas être lu', 'on utilise la valeur par défaut de x']) x=1:10 end [error_message,error_number]=lasterror(%t)
// 2ème exemple (structures try/catch imbriquées) function nestedtry(a, b) disp("DEBUT") mprintf("\ta est %s\t\tb est %s\n",string(a),string(b)) try disp("try 1") try disp("try 2") z=a+1; // err si chaîne catch disp("catch 2") t=b+1; // err si chaîne end disp("après try 2") catch disp("catch 1") end disp("après try 1 - FIN") endfunction nestedtry(1,1) nestedtry("une chaîne",1) nestedtry(1,"une chaîne") nestedtry("une chaîne","une chaîne")
Voir aussi
Report an issue | ||
<< then | Structure de contrôle | while >> |