try文

例外によって実行を分岐するためのtry文について説明します。


目次:


書式

try

catch

スコープ

予約変数

endtry

書式

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文全体でのスコープはありません。セクションが個別のスコープを生成します。

予約変数

実行制御がcatchキーワードに到達すると、予約変数__errorが定義されます。

__errorはerrorクラスの変数です。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クラスのインスタンスが格納されます。

Copyright © Rice All rights reserved.