0

私はこのような状態にあります

String str = null;

try{
  ...
  str = "condition2";
}catch (ApplicationException ae) {
  str = "condition3";
}catch (IllegalStateException ise) {
  str = "condition3";
}catch (Exception e) {
  str = "condition3";
}

if(str == null){
  str = "none";
}

str = "condition3";今、私はすべてを一行にまとめたいと思います。最後にブロックは常に実行されるので、それは私のニーズを満たしません。他に何ができるか。

4

6 に答える 6

6

Java 7以降では、1つのブロックで複数の例外タイプをキャッチできます。catchコードは次のようになります。

String str = null;

try {
    ...
    str = "condition2";
} catch (ApplicationException|IllegalStateException|Exception ex) {
    str = "condition3";
}

ところで:あなたが投稿したコードと私のJava 7コードは、との両方のスーパークラスであるcatch (Exception e)ため、すべて単純に折りたたむことができます。ExceptionApplicationExceptionIllegalStateException

于 2012-05-29T05:22:38.230 に答える
2

Java7例外処理構文を使用できます。Java 7は、1つのcatchブロックで複数の例外処理をサポートします。Exp-

String str = null;

try{
  ...
  str = "condition2";
}catch (ApplicationException | IllegalStateException | Exception  ae) {
  str = "condition3";
}
于 2012-05-29T05:26:04.037 に答える
1

単一のcatchブロックで複数の例外をキャッチするJava7機能を使用している場合は、「final」キーワードを追加する必要があります

catch (final ApplicationException|IllegalStateException|Exception ex) {
于 2012-05-29T05:34:33.180 に答える
1
try{
  ...
  str = "condition2";
}catch (Exception ae) {
 str = "condition3";
}

他のすべてはExceptionのサブクラスであるため。別のメッセージを表示したい場合は、次のように試すことができます

try{
   ...
   str = "condition2";
}catch(ApplicationException | IllegalStateException e){
if(e instanceof ApplicationException)
    //your specfic message
    else if(e instanceof IllegalStateException)
    //your specific message
    else
        //your specific message
    str = "condition3";
}
于 2012-05-29T05:26:41.987 に答える
0

ブロックと一般的な例外catchブロックで同じことをしているのでApplicationException、ブロックを削除できます。IllegalStateExceptionExceptionApplicationExceptionIllegalStateException

于 2012-05-29T05:29:41.933 に答える
0

私はここで手足に出て、これを提供するつもりです:

String str = null;

 try{
     ...
     str = "condition2";
 }catch (Throwable e) {
    str = "condition3";
 }
 finally {
     if(str == null){
         str = "none";
     }
 }

これが「要約」の意味ではない場合は、明確にしてください。

読んでください

http://www.tutorialspoint.com/java/java_exceptions.htm http://docs.oracle.com/javase/tutorial/essential/exceptions/

于 2012-05-29T05:31:32.723 に答える