0

如果我分别捕获异常,那么为什么需要将值设为 final ?例如 1. 这被认为是一种好习惯吗?如果是,为什么?如果不是为什么?

catch(final InputOutputException exception) 
{// do stuff 
}
4

2 回答 2

1

在 Java 中可以声明任何东西final——在这种情况下,声明类似于声明方法参数final

这样做的效果是您将无法重新分配值

catch(final InputOutputException ex) {
    ex = new InputOutputException();
     // ^ compile time error.
}

Exception在实践中,我只有在需要在匿名类中使用时才真正见过这种用法,因为只final允许以这种方式引用局部变量:

} catch (final Exception e) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            myLabel.setText(e.getMessage());
        }
    });
}

Robert Simmons Jr 在他的Hardcore Java一书中建议做一切 final。这样做的理由是它将拼写错误和代码错误转化为编译时错误。

于 2013-10-28T08:06:33.740 回答
0

明确final表示您没有更改该字段。

恕我直言,如果您的处理代码不是那么简短以至于读者无法轻松解决这个问题,那么您做错了什么。

我认为您应该将字段final设置为类可以很长,但是方法应该足够简单,您可以确定它们是否是最终的。

于 2013-10-28T08:05:44.953 回答