为什么在单个处理程序catch语句中参数是final



在单个处理程序catch语句处理多个异常的情况下,为什么参数是隐式final ?

catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
}

在这个代码中ex是final。为什么会这样呢?

否则,您可能会想写ex = new IOException();这样的东西,但由于类型实际上不是IOExceptionSQLException,它将以一种奇怪的方式破坏类型安全。

最新更新