Home News DOC Class DL Others Cooker
Documents  >  Tutorial  >  throw 文
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 の場合は __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.