使用try/catch进行最终变量赋值

19 浏览
0 Comments

使用try/catch进行最终变量赋值

因为我相信这是一个良好的编程实践,所以如果我的(局部或实例)变量只打算被写一次,我会将它们全部声明为final。然而,我注意到当一个变量赋值可能会抛出异常时,就不能将该变量声明为final:

final int x;

try {

x = Integer.parseInt("someinput");

}

catch(NumberFormatException e) {

x = 42; // 编译错误:final局部变量x可能已经被赋值

}

有没有一种方法可以在不使用临时变量的情况下实现这一点?(或者这不是使用final修饰符的正确场合吗?)

0