3

Java 7では、次のように一度に複数の例外をキャッチできます。

try {  
    Class a = Class.forName("wrongClassName");  
    Object instance = a.newInstance();  
} catch (ClassNotFoundException | IllegalAccessException |  
   InstantiationException ex) {  
   System.out.println("Failed to create instance");  
}  

これはビット単位の包括的ORですか?私がJavaで知っている限り、ビット演算子はバイナリを比較するために使用されます。そうでない場合、Javaはこの演算子をビット単位の包含ORとどのように区別しますか?

ここで使用されている演算子の名前を知りたいだけです。この演算子はjava7より前に存在します。

どんな答えでも大歓迎です。ありがとう。

4

4 に答える 4

5

これは Java 7 以降で有効であり、パイプと呼んでいます。

catch ブロック自体は multi-catch ブロックと呼ばれます。

使用されるコンテキストに応じて、この演算子はビットごとの or またはマルチキャッチ演算子になります。(1 + 1)+は加算演算子、の"hello" + "world"+ は連結演算子です。

于 2013-02-02T08:51:02.050 に答える
4

ドキュメントは言った:

catch 句は、ブロックが処理できる例外の種類を指定し、各例外の種類は縦棒(|) で区切られます。

この演算子は、Java 7 より前はビット単位の包含的 ORとして使用されていました。

于 2013-02-02T08:49:57.143 に答える
0

この演算子は、Java 7 より前に (非短絡) OR 演算子として存在していました。これがおそらくここで使用された理由です。1 つの例外、OR の例外、OR の例外などをキャッチしています。

于 2013-02-02T08:54:56.660 に答える