ネイティブメソッドを実装する |
SignalError()
関数を使用すると、ネイティブメソッドの中から Java の例外割り込みをあげることができる。このページではその方法を説明する。ネイティブメソッドで Java オブジェクトを使用する というタイトルのページのネイティブメソッドからの Java オブジェクトの呼び出し セクションで最初 に紹介した NativeExample クラスの例 に戻ってみる。
例外割り込みをあげる他のメソッドと同様に、ネイティブメソッドでもあげられる可能性のある例外割り込みを
throws
節で宣言しなければならない。 NativeExample クラスのquote()
ネイティブメソッドは、 IllegalArgumentException をあげる。NativeExample クラスのnative static String quote(int index) throws IllegalArgumentException;quote()
メソッドの実装は、SignalError()
を使用して IllegalArgumentException 例外割り込みをあげる。struct Hjava_lang_String * NativeExample_quote(struct HNativeExample *unused, long index) { char *quotation; if (index < 1 || index > 3) { SignalError(0, "java/lang/IllegalArgumentException",0); return NULL; } quotation = quotes[index - 1]; return makeJavaString(quotation, strlen(quotation)); }SignalError ()
への最初の引数は実行環境である。通常は、現在の環境を示す0
を渡す。2 番目の引数は、あげる例外割り込みの完全名である。装飾の多い例外割り込み名中のパッケージやクラス名を表す場合は、ピリオド('.') のかわりにスラッシュ('/') を使用する。3 番目の引数は、詳細メッセージを含む文字列である。 Java で例外割り込みを作成するようなことがあっても、このメッセージは例外コンストラクタに渡すメッセージと同じである。
ネイティブメソッドを実装する |