使用try / catch声明并初始化最终变量

时间:2016-01-18 15:40:05

标签: java android

我正在尝试在适配器中声明并初始化最终变量,以便在OnLongClickListener()声明中使用该变量。问题是变量正在被一个可能引发失败异常的方法初始化,因此初始化必须在try / catch的上下文中进行。在异常块中,有一个回退值,而是指定最终变量。这一切都发生在被覆getView()的{​​{1}}内。

我的问题是,有一种光滑的方法吗?我通过在try / catch之外声明一个临时变量,并在try / catch中初始化它,然后在try / catch块之后使用临时变量的结果声明并初始化最终变量来解决这个问题。这只是感觉太乱了。

This question is pretty closely related, but the solution presented seems extreme. Is it typical to wrap the entire contents of a method in a try/catch?

代码:

ArrayAdapter<T>

1 个答案:

答案 0 :(得分:2)

移动逻辑以使Vehicle进入自己的方法是很好的。它使它可重复使用,更容易阅读。

private Vehicle getVehicle(int position) {
    try {
        return Data.getVehicle(values.get(position).getId());
    } catch (ObjectNotFoundException e) {
        Log.e(TAG, e.getMessage() + "-- unable to find vehicle while getting list item vehicle for vehicles tab fragment");
        return values.get(position);
    }
}

然后回到原来的方法中:

final Vehicle vehicle = getVehicle(position);