try文
書式
try文は以下の形式です。
try
...
catch
...
endtry
tryセクションで例外が発生したらcatchセクションに実行制御が移動します。catchセクションが無ければendtryの次の文に実行制御が移動します。
tryセクションで例外が発生せずに実行がcatch、endtryに達したらendtryの次の文に実行制御が移動します。
try
try文である事とtryセクションの開始を示すキーワードです。
tryセクションは以下の形式です。
try
...
tryセクショはtry文の先頭に一つだけ必要です。
catch
catchセクションの開始を示すキーワードです。
catchセクションは以下の形式です。
catch
...
tryセクションの中で例外が発生するとセクション内の文が無条件で実行されます。
実行がendtryに到達すると実行がendtryの次の文に移動します。
catchセクションで再度発生した例外は現在のtry文の外へスローされます。
catchセクションはオプションです。try文中に一つしか存在できません。
catchセクションが無い場合は tryセクションで発生した例外は無条件で処理済みとなります。
スコープ
try文全体でのスコープはありません。セクションが個別のスコープを生成します。
予約変数
文
セクション内の文はオプションです。セクション内に任意の数だけ存在できます。
endtry
try文の終了を示すキーワードです。
endtryの代わりに省略形のetを使用できます。etもキーワードであることに注意してください。
例
1: | class example |
2: | open method void someMethod() |
3: | throw "exception"; |
4: | em |
5: | ec |
1: | example ex; |
2: | try |
3: | ex.someMethod(); // It throws an exception. |
4: | catch |
5: | string mess = __error.ExceptionData.Entity; // "exception" |
6: | endtry |
someMethod()メソッドから例外がスローされます。
例外はtry文にキャッチされます。try文にcatchセクションがあるので実行制御が移動します。
catchセクションに実行制御が移動する際に予約変数__errorにスローされたerrorクラスのインスタンスが格納されます。