Table des matières
catch
Évalue un script et intercepte les renvois d'exceptions
Syntaxe
catch script ?varName?
Description
La commande catch peut être employée pour empêcher les erreurs de faire échouer l'évaluation d'une commande. Catch appelle l'interpréteur Tcl récursivement pour exécuter script, et retourne toujours sans lever une erreur, indépendamment de toute erreur produite pendant l'exécution de script.
Si script lève une erreur, catch renverra une valeur entière différente de zéro correspondant à un des code de retours d'exceptions (voir tcl.h pour la définitions des codes). Si l'argument varName est fourni, alors le message d'erreur de l'évaluation de script est affecté à la variable désigne par varName.
Si script ne lève pas d'erreur, catch renverra 0 (TCL_OK) et la valeur renvoyée par script est affectée à la variable.
Notez que catch intercepte toutes exceptions, incluant celles générées par break et continue aussi bien que les erreurs. Les seules erreurs qui ne sont pas interceptées sont les erreurs de syntaxe trouvées quand le script est compilé. Ceci est dû à ce que la commande catch n'intercepte les erreurs qu'à l'exécution. Quand l'instruction catch est compilée, le script est aussi compilé et toutes les erreurs de syntaxe génèrent une erreur Tcl.
Exemples
La commande catch peut être employée dans un if pour des choix basés sur le succès d'un script.
if { [ catch {open $someFile w} fid ] } { puts stderr "Ne peut ouvrir $someFile en écriture\n$fid" exit 1 }
La commande catch n'interceptera pas les erreurs de syntaxe compilées. La première fois que la procédure foo sera appelée, le corps sera compilé et une erreur Tcl sera générée.
proc foo {} { catch {expr {1 +- }} }