- - PR -
自作Exceptionがおかしい?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-18 20:19
いつも大変御世話になっております。
以下のようなソースで例外が発生したときExceptionから自作のAAAExceptionを作ってそれをthrowしているのですが、throwするところでJavaVMが異常終了してしまいます。 このようなことはしてはいけないのでしょうか? (AAAExceptionはExceptionから派生した自作クラスです。) try { : } catch (Exception e) { AAAException ae = new AAAException(4, 0, e.getMessage()); throw ae; /// ここで異常終了 } | ||||
|
投稿日時: 2004-11-18 20:24
こんばんわ。
この throw(例外) を受け取る(catchする)プログラムは用意されていますか? たとえば、これが main プログラムですと、 VMに直接に 例外が投げられると思います。 | ||||
|
投稿日時: 2004-11-19 02:19
ん?「異常終了」って例えばどんな状態なんでしょうか? 私の環境では(J2SDK1.4)では予想外な結果はでませんでしたよ。 自作のAAAExceptionがjava.lang.Exceptionを継承している限りには 不適切な例外処理記述ではコンパイル段階で警告を受けるはずですし、 もしmainメソッドからthrowsキーワードでmainメソッド呼び出し側に例外 がスローされたとしても、スタックトレースが表示されるだけです。 それをして「異常終了」というならばかなり無理がある気がします。 だって、意図してそう命令しているわけですから。 | ||||
|
投稿日時: 2004-11-19 05:24
ここで異常終了するってことがわかるってことは、 スタックトレースが表示されてるんでしょうね。 だとしたら、takamaroさんがおっしゃるように予想外のことではないです。 もう少し何がしたいのか書いていただければ、 意図していることにお答えできるかもしれません。 呼び出し元のメソッドか、その呼び出し元、・・・ あるいは大元のmainメソッドでcatchできなければ、 JavaVMは終了してしまいます。 try { method(); // 例外が生じる可能性があるところ } catch(AAException e) { // 例外処理 } | ||||
|
投稿日時: 2004-11-19 15:03
皆様、お返事ありがとうございます。
JNI(Java Native Interface)からCallIntMethodでこの関数を呼び出していたことが原因でした。 JNI側でJavaのExceptionをキャッチする方法が分からないため結局例外にはせずにエラーコードをリターンするように作り直しました。 |
1