2017-12-15 10 views
3

私はこの再突然の例外を遭遇し、それがコンパイルされても驚いています。"throw(e)"と "throw e"の違いは?

} catch(SomeException e) { 
    ... 
    throw(e); 
} 

この投()と何が通常使用されている間に違いは...?あり

} catch(SomeException e) { 
    ... 
    throw e; 
} 

、これは、文書化や指導他の上で1つを選択する上でされている場所へのリンク?

+4

これらは同じです –

+1

ちょうど余分なグループ括弧のように見えます。 – Carcigenicate

+0

ログに記録して投げるべきではないことに注意してください。他の場所にキャッチしてログに記録すると、2つの例外があるという誤った印象を受けます。 –

答えて

9

かなりの数の言語で、必要な数の式を括弧で囲むことができます。 Javaもその一つです。以下は完全に有効なコードです。

public class HelloWorld { 
    public static void main(String[] args) { 
    throw ((((new RuntimeException())))); 
    } 
} 

ソースファイルが2バイト大きいことを除いて、違いはありません。

+2

"ソースファイルが2バイト大きいことを除いて、違いはありません。そしてはるかに読みにくい。 – davidxxx

6

機能的には同等です。

しかし、throw(e);を選択しないでください。誰かがメソッド呼び出しを間違える可能性があり、少なくとも、あなたが行っていることが不必要に不思議に思うかもしれません。分かりやすくするため、通常のthrow e;の構文を使用してください。

+2

機能上必要とされないか、可読性が向上しない不必要な括弧は、エラーが発生しやすく、デッドコードです。 – davidxxx

0

投げ、それならばそれは同じだ

Public int get value() { 
    return (3); 
} 

のequlivilantはですreturn文

Public int get value() { 
    return 3; 
} 

ように考え

を "スロー可能"(通常は例外)をスローする命令でありますスローブ可能。

顔では、まったく同じことを遵守します。

関連する問題