2012-03-09 38 views
0

私の質問は次のとおりです。CalTransactionFactoryが初期化されていないか、クラスが存在しないとします。次に、その例外を捕捉して例外をスローしたいと思います。したがって、RuntimeExceptionまたはExceptionの下に来るはずです。以下のコード例外の処理方法

try { 
    calTransaction = CalTransactionFactory.create("PDS_GeoLocationService"); 
    calTransaction.setName("GetLocationByIp"); 
    calEvent=CalEventFactory.create("PersonalizationGeoLocationService"); 
    calEvent.setName("IPAddress"); 
    calEvent.addData("RemoteIP",ipAddress); 

    calEvent.completed();    

    calTransaction.setStatus("0"); 

} catch (RuntimeException re) { 
    calTransaction.setStatus(re); 
    getLogger().log(LogLevel.ERROR, "CAL is not initialized" +re.getMessage()); 
    throw re; 
} 
catch (Exception e) { 
    getLogger().log(LogLevel.ERROR, "CAL is not initialized" +e.getMessage()); 
} 
+2

正確な質問は何ですか? – talnicolas

+0

私の最初の行を見てください。 – AKIWEB

答えて

0

catch(Exception e)

+0

@deporter - 私がOPが尋ねていると思うことを解釈する自由をとった場合、彼は自分が得ている例外を適切に処理するためにキャッチを構成する方法に関心があると私は信じている。したがって、答え。 – ggrigery

+0

@deporter:長さまたはトリビアルは、回答が回答かコメントかを判断する基準ではありません。唯一の基準は、質問に答えるかどうか*です。 –

+0

「ANY例外」 - >「ANY throwable」? –

0

のRuntimeExceptionは、例外のタイプである(それらのほぼすべての)例外のサブクラスであるすべての例外をキャッチしますです。それが捕捉される場所は、createメソッドによってスローされる例外のタイプによって異なります。例外のタイプがRuntimeExceptionであるか拡張されている場合、それがキャッチされます。それ以外の場合は例外にキャッチされます。それは質問ですか?

通常、例外を再現する予定のキャッチブロックにログインすることは悪い習慣です。

また、RuntimeExceptionの場合は、calTransactionが初期化されているかどうかわからないため、ステータスを設定するとNullPointerExceptionが発生する可能性があります。それが避けようとしている場合は、何らかの型のInitializationExceptionをスローするか、それを以前のtry/catchに移動させることができます。

1

java.lang.ClassNotFoundExceptionは、JVMが設定済みのクラスローダーを介してクラスファイルを見つけることができない場合にスローされます。この例外は、Exceptionに拡張されます。

java.lang.NullPointerExceptionは、変数がnullで何かがアクセスしようとするとスローされます。それはRuntimeExceptionを拡張し、Exceptionを拡張します。

+0

Nit:クラスリンク時にJVMがクラスファイルを見つけることができないときに 'ClassNotFoundError'がスローされ、反射APIを介して同等のものが発生したときに' ClassNotFoundException'がスローされます。 –

+0

@ Athrawn17だから私の場合、私はruntimeexceptionを削除し、例外キャッチブロックのみを使うべきですか? – AKIWEB

+0

あなたの目標が何であるかによって異なります。特定の原因をログに記録する場合は、探している特定のエラーを検出します。あなたが "世界"を捕まえたければ、catch(Exception e)がそれを行います。 – Athrawn17