next up previous contents
Next: 6.14 throw式 Up: 6. 制御式 Previous: 6.12.1 UNIX上のCmm処理系のpackage式が満たすべき機能

  
6.13 try-catch

try-catch式は、例外を受け取るための、文法構造を提供します。例外は、throw式によって投げられます。6.1

try-catch式は、try部catch部、それにオプションのfinally部に別れます。

try部は、まず通常実行される式を書く部分で、この式実行中になんら かの例外が発生することを想定する部分です。

catch部は、例外を受取処理する部分で、1つ以上のcatch式からなりま す。catch式は、その式で受け取るべき例外と、それを受け取った場合 に実行する式を書きます。

finally部は、必須の部分ではありません。必要があるときのみ記述し ます。これは、try-catch式の最後に書かれ、例外が発生しなかったとき、例 外を受け取ったとき、どちらの場合にも実行すべき式を書く部分です。

典型的なtry-catch式は、下記のようになります


try

<式>
catch (例外クラス1 変数名1)
<式1>
catch (例外クラス2 変数名2)
<式2>
catch (例外クラス3 変数名3)
<式3>
finally
<式4>

この式の場合、try部の式がまず実行されます。

式が例外を投げることなく終わった場合は、catch部の式はどれも実行され ません。

式実行中に、例外が投げられた場合、その例外がcatch部分に記された「例 外クラス」にマッチするかチェックされます。マッチした場合は、その例外に 「変数名」が名付けられたのちに、そのcatch部分に書かれた式が実行され ます。

catch式に、同じ例外クラスが複数指定されている場合、その例外を受け取っ た場合は、最初のものだけ実行されます。

catch部に指定していない例外が投げられた場合は、さらに呼びだし元へと 例外は投げられます。このとき、finally部も実行されません。

try-catch式の文法構造は、以下のようになります。


try-catch$\Longrightarrow$
`try' <式> <catch部> [`finally' <式>]

catch$\Longrightarrow$ <catch式> [<catch式>]*
catch$\Longrightarrow$ `catch' `(' <識別子> <識別子> `)' <式>


next up previous contents
Next: 6.14 throw式 Up: 6. 制御式 Previous: 6.12.1 UNIX上のCmm処理系のpackage式が満たすべき機能
Tetsuo Ono
1998-11-05