instanceof是否为子类异常工作?

Jim*_*mmy 4 java exception-handling

java.net.ConnectException 扩展 java.net.SocketException

如果我执行以下操作,它是否会满足这两个例外情况?即如果我使用"父"异常instanceof,是否包含任何子类异常?

catch (Exception e)
{
   if (e instanceof java.net.SocketException)
   {
      System.out.println("You've caught a SocketException, OR a ConnectException");
   }
}
Run Code Online (Sandbox Code Playgroud)

(并且对于记录,是的我知道捕获普通的异常是坏的,只是在这个例子中使用它;))

Boz*_*zho 11

例外是常规类,因此instanceof适合他们.

但是你不需要这样的东西.以下结果取得了相同的结果:

try {
    throw new ConnectException();
} catch (SocketException e) {
    System.out.println("You've caught a SocketException, OR a ConnectException");
}
Run Code Online (Sandbox Code Playgroud)