9028ab3dc613ca56024069dbfa48a83d506400d4
[scilab.git] / scilab / modules / core / help / ja_JP / 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="ja">
3     <refnamediv>
4         <refname>try</refname>
5         <refpurpose>try-catch 制御命令のtryブロックを開始</refpurpose>
6     </refnamediv>
7     <refnamediv xml:id="catch">
8         <refname>catch</refname>
9         <refpurpose>try-catch 制御命令のcatchブロックを開始</refpurpose>
10     </refnamediv>
11     <refsynopsisdiv>
12         <title>呼出し手順</title>
13         <synopsis>try
14             statements
15             catch
16             statements
17             end
18         </synopsis>
19     </refsynopsisdiv>
20     <refsection>
21         <title>説明</title>
22         <para>
23             <literal>try</literal>-<literal>catch</literal> 制御構文
24             はエラーを発生する可能性があるコードを管理するために
25             使用されます.
26         </para>
27         <para>
28             <literal>try</literal>-<literal>catch</literal>制御命令が
29             実行されている場合,通常,
30             <literal>try</literal> と <literal>catch</literal>キーワードの
31             間の命令のみが実行されます.
32             しかし,これらの命令のどれかでエラーが発生した場合,
33             <literal>catch</literal>キーワードまでの命令はスキップされ,
34             <literal>catch</literal> および <literal>end</literal>
35             キーワードの間の命令が,デフォルトのエラーモードで
36             実行されます (<link linkend="errcatch">errcatch</link>参照).
37         </para>
38         <para>
39             <link linkend="lasterror">lasterror</link> 関数により
40             記録されたエラーを取得することができます.
41         </para>
42         <para>
43             代替命令が指定されない場合,<literal>catch</literal> 命令
44             は無視されます.
45         </para>
46         <para>
47             エラー処理用の<literal>'errcatch'</literal>引数を指定して
48             <link linkend="execstr">execstr</link> 関数を
49             使用することも可能であることに注意してください.
50             これは,特に構文エラーを処理する際に有用です.
51         </para>
52         <para>
53             <literal>try-catch</literal> は
54             に多少なりとも似ていることにも注意してください:
55         </para>
56         <programlisting role=""><![CDATA[ 
57 if execstr("<try instructions>","errcatch")<>0 then
58   <catch instructions>
59 end
60  ]]></programlisting>
61         <para>
62             この命令は,<link linkend="errcatch">errcatch</link>と同様の
63             内部機構を使用しています.
64             これが,<link linkend="errcatch">errcatch</link> または
65             <emphasis>execstr(...,"errcatch")</emphasis>
66             を<literal>try</literal>-<literal>catch</literal>
67             制御構造の中に含めることができない理由です.
68             このコンテキストは検出され,
69             特定のエラーメッセージが発生します
70             (この誤差は<literal>try</literal>でトリガーされた場合の
71             他の誤差と同様に捕捉,保持されます).
72         </para>
73         <para>
74             しかし, <literal>try</literal>-<literal>catch</literal> 
75             制御構造はネスト可能です (以下の例2を参照ください).
76         </para>
77     </refsection>
78     <refsection>
79         <title>例</title>
80         <programlisting role="example"><![CDATA[ 
81 // 例 1
82 file_path=TMPDIR+'/wrong'
83 try
84   u=mopen(file_path,'r')
85   x=mget(10,'c',u)
86 catch
87   disp(['file '+file_path+ 'cannot be read',
88         'using default values for x'])
89   x=1:10
90 end 
91  [error_message,error_number]=lasterror(%t)
92 // 例 2 (ネストしたtry/catch構造)
93 function nestedtry(a,b)
94 disp("START")
95 mprintf("\ta is %s\t\tb is %s\n",string(a),string(b))
96 try
97   disp("try 1")
98   try
99     disp("try 2")
100     z=a+1;  // err when string
101   catch
102     disp("catch 2")
103     t=b+1;  // err when string
104   end
105   disp("after try 2")
106 catch
107   disp("catch 1")
108 end
109 disp("after try 1 - THE END")
110 endfunction
111 nestedtry(1,1)
112 nestedtry("a string",1)
113 nestedtry(1,"a string")
114 nestedtry("a string","a string")
115  ]]></programlisting>
116     </refsection>
117     <refsection role="see also">
118         <title>参照</title>
119         <simplelist type="inline">
120             <member>
121                 <link linkend="error">error</link>
122             </member>
123             <member>
124                 <link linkend="execstr">execstr</link>
125             </member>
126             <member>
127                 <link linkend="if">if</link>
128             </member>
129             <member>
130                 <link linkend="lasterror">lasterror</link>
131             </member>
132             <member>
133                 <link linkend="errcatch">errcatch</link>
134             </member>
135         </simplelist>
136     </refsection>
137 </refentry>