Xcos load: use a valid port type value
[scilab.git] / scilab / modules / core / help / fr_FR / 1_keywords / try.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="try" xml:lang="fr">
3     <refnamediv>
4         <refname>try</refname>
5         <refpurpose>mot clé de début du bloc try dans une instruction de contrôle
6             try-catch
7         </refpurpose>
8     </refnamediv>
9     <refnamediv xml:id="catch">
10         <refname>catch</refname>
11         <refpurpose>mot clé de début du bloc catch dans une instruction de
12             contrôle try-catch
13         </refpurpose>
14     </refnamediv>
15     <refsynopsisdiv>
16         <title>Séquence d'appel</title>
17         <synopsis>
18             try
19             statements
20             catch
21             statements
22             end
23         </synopsis>
24     </refsynopsisdiv>
25     <refsection>
26         <title>Description</title>
27         <para>L'instruction de contrôle
28             <literal>try</literal>-<literal>catch</literal> peut être utilisée pour
29             controler les conséquences d'une erreur d'exécution en permettant
30             l'exécution de code spécifique en cas d'erreur.
31         </para>
32         <para>Quand une instruction de contrôle
33             <literal>try</literal>-<literal>catch</literal> est exécutée, normalement
34             seules les instructions comprises entre les mots clés
35             <literal>try</literal> et <literal>catch</literal> sont exécutées.
36             Cependant, si une erreur se produit pendant l'exécution de ces
37             instructions, l'erreur est mémorisée, les instructions restantes jusqu'au
38             mot clé <literal>catch</literal> sont ignorées et les instructions
39             comprises entre les mots clés <literal>catch</literal> et
40             <literal>end</literal> sont exécutées en utilisant le mode de gestion des
41             erreurs par défaut.
42         </para>
43         <para>L'erreur mémorisée peut être retrouvée en utilisant la fonction
44             <link linkend="lasterror">lasterror</link>.
45         </para>
46         <para>Les intructions comprises entre les mots clés
47             <literal>catch</literal> et <literal>end</literal> peuvent être omises
48             ainsi que le mot clé <literal>catch</literal> si aucun code alternatif
49             n'est fourni.
50         </para>
51         <para>
52             Notez que l'on peut aussi utiliser la fonction <link linkend="execstr">execstr</link> avec l'argument
53             <literal>'errcatch'</literal> pour gérer les erreurs et tout
54             particulièrement pour gérer les erreurs de syntaxe.
55         </para>
56         <para>
57             Notez également que <literal>try-catch</literal> est plus ou moins
58             similaire à :
59         </para>
60         <programlisting role=""><![CDATA[
61 if execstr("<instructions du bloc try>","errcatch")<>0 then
62   <instructions du bloc catch>
63 end
64  ]]></programlisting>
65         <para>
66             Il utilise le même mécanisme interne que "errcatch". C'est pourquoi <emphasis>execstr(...,"errcatch")
67             </emphasis>
68             ne peut pas être utilisé à l'intérieur d'une structure
69             <literal>try</literal>-<literal>catch</literal>. Un tel contexte est
70             détecté et génère un message d'erreur spécifique (cette erreur est masquée
71             et mémorisée comme n'importe quelle autre erreur si elle se produit dans
72             le bloc <literal>try</literal>).
73         </para>
74         <para>Par contre plusieurs structures
75             <literal>try</literal>-<literal>catch</literal> peuvent être imbriquées
76             les unes dans les autres (voir le deuxième exemple ci-dessous).
77         </para>
78     </refsection>
79     <refsection>
80         <title>Exemples</title>
81         <programlisting role="example"><![CDATA[
82 // premier exemple
83 file_path=TMPDIR+'/wrong'
84 try
85   u=mopen(file_path,'r')
86   x=mget(10,'c',u)
87 catch
88   disp(['le fichier '+file_path+ 'ne peut pas être lu',
89         'on utilise la valeur  par défaut de x'])
90   x=1:10
91 end
92 [error_message,error_number]=lasterror(%t)
93  ]]></programlisting>
94         <programlisting role=""><![CDATA[
95 // 2ème exemple (structures try/catch imbriquées)
96 function nestedtry(a,b)
97 disp("DEBUT")
98 mprintf("\ta est %s\t\tb est %s\n",string(a),string(b))
99 try
100   disp("try 1")
101   try
102     disp("try 2")
103     z=a+1;  // err si chaîne
104   catch
105     disp("catch 2")
106     t=b+1;  // err si chaîne
107   end
108   disp("après try 2")
109 catch
110   disp("catch 1")
111 end
112 disp("après try 1 - FIN")
113 endfunction
114 nestedtry(1,1)
115 nestedtry("une chaîne",1)
116 nestedtry(1,"une chaîne")
117 nestedtry("une chaîne","une chaîne")
118  ]]></programlisting>
119     </refsection>
120     <refsection role="see also">
121         <title>Voir aussi</title>
122         <simplelist type="inline">
123             <member>
124                 <link linkend="error">error</link>
125             </member>
126             <member>
127                 <link linkend="execstr">execstr</link>
128             </member>
129             <member>
130                 <link linkend="if">if</link>
131             </member>
132             <member>
133                 <link linkend="lasterror">lasterror</link>
134             </member>
135         </simplelist>
136     </refsection>
137 </refentry>