throw 文

例外の発生を通知するthrow文について説明します。


目次:


書式

throw

セミコロン

書式

throw文は、以下の形式です。


throw ;

throw 式 ;


例外が発生したことを通知するためにerrorクラスのインスタンスをスローします。実行制御はthrow文を囲む直近のtry文を見つけるために呼出履歴を遡ります。

try文を見つけたときは、catchセクションがあればセクションの先頭に制御をジャンプし、無ければendtryの次の文に制御をジャンプします。

try文が見つからないときは、例外がアプリケーションに到達しRiceプログラムは実行を停止します。

throw

throw文である事を示すキーワードです。

この式が生成するインスタンスがerrorクラスのインスタンスに添付されます。インスタンスが必要ない無い場合は省略できます。


throw文が式を持たない場合は、errorクラスのExceptionDataゲッタは未初期化のproxyクラスのインスタンスです。

throw文が式を持つ場合は、errorクラスのExceptionDataゲッタは式で初期化されたproxyクラスのインスタンスです。

式が予約変数__errorの場合は、添付されずにそのまま再スローされます。

セミコロン

throw文の終了はセミコロンで表します。

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()メソッドから例外がスローされます。throw文が文字列リテラルを持つのでスローされたインスタンスのExceptionDataゲッタが文字列で初期化されています。


例外はメソッド呼び出しを囲むtry文にキャッチされます。try文にcatchセクションがあるので実行制御が移動します。

catchセクションに実行制御が移動する際に予約変数__errorにスローされたインスタンスが格納されます。

Copyright © Rice All rights reserved.