0

私は次のコードを持っており、finally を使用して例外メッセージを取得したいのですが、catch を使用することでその arg を簡単に取得できますが、finally を使用して例外メッセージを取得できないことはわかっています。

try {
 MyClass obj=new MyClass();
 obj.strProName = jobj1.getString("productname");
 obj.strPrice = jobj1.getString("price");
 obj.strCurrency = jobj1.getString("currency");
 obj.strSalePrice = jobj1.getString("saleprice");
 obj.strStoreName = jobj1.getString("storename");

//arrayList.add(obj);
throw new Exception("Exception Reason!");

}
finally{
 //want to get that exception message here without using catch or can see how finally catching here the exception
}
4

5 に答える 5

6

とは異なりcatch block、ブロックはインスタンスfinallyを受け取りませんexception

だから、私の側からの答えはNoです。

つまり、メッセージを出力するということですException。インスタンスが必要です。

ドキュメントに従って(jls-14.2

ブロックは、一連のステートメント、ローカル クラス宣言、および中かっこ内のローカル変数宣言ステートメントです。

したがって、catch ブロックの外で catch(Exception e) {} はアクセスできません ( e)。

于 2013-08-22T11:43:45.773 に答える
3

しかし、私が知っている限り、finally を使用して例外メッセージを取得することはできません。

そうです、例外をキャッチするには、まあ... catch句を使用する必要があります。

ただし、メッセージを (catch 句の) 変数に格納し、後でその変数を finally 句で使用することもできます。

于 2013-08-22T11:43:33.740 に答える
2

finally例外をキャッチしません。catchブロック内でのみ例外をキャッチできます。ブロックの目的はfinally、両方のケースで実行することです。つまり、例外が発生するかどうかに関係なく実行されます。

于 2013-08-22T11:42:14.123 に答える
1

最後に例外をキャッチしません。これは、エラーがなく、キャッチが呼び出されない場合でも、常に何かを行うために使用できるものです。

try {
 MyClass obj=new MyClass();
 obj.strProName = jobj1.getString("productname");
 obj.strPrice = jobj1.getString("price");
 obj.strCurrency = jobj1.getString("currency");
 obj.strSalePrice = jobj1.getString("saleprice");
 obj.strStoreName = jobj1.getString("storename");
}
//arrayList.add(obj); here you can Catch the exception, meaning it will only show if there is an exception!
catch(Exception e){
 System.out.print(e+"=Exception Reason!");
}
finally{
//Finally is used to do something no matter what. 
//It will do what ever you want it to do, 
//even if the catch is never used. 
//Use catch to show exception, 
//finally to close possible connections to db etc.
}
于 2013-08-22T11:48:19.447 に答える
-1

これを試して

try {
       .....
       throw new Exception("Exception Reason!");
    }
catch(Exception e){
     msg=e.getMessage();
finally{
//USE String msg here.
}
于 2013-08-22T11:48:05.183 に答える