如何模仿“尝试与资源”为Android

时间:2017-04-10 16:31:38

标签: java android

try with resources在Android上不可用, 如果你想针对各种各样的设备, 所以我想用这样的语义来模仿这样的东西:

  1. 无异常 - 关闭,如果关闭失败则抛出异常
  2. 有例外 - 关闭并忽略关闭例外
  3. 此类代码是否可以按我的意愿工作,或者我错过了什么?并且可以以某种方式简化它吗?

    final Closeable closebale = ...;
    try {
        //work with closeable
    } catch (IOException e) {
        try {
            closeable.close();
        } catch (IOException e2) {
            //log exception
        }
        closeable = null;
        throw e;
    } finally {
        if (closeable != null) {
            //we not catch any exception
            closeable.close();
        }
    }
    

1 个答案:

答案 0 :(得分:-1)

Java中的历史模式是:

Closeable foo = null;
try
    {
    foo = ...;
    ...
    }
finally
    {
    if (foo != null)
        { foo.close(); }
    }

如果您希望捕获并处理或禁止在尝试关闭资源期间发生的任何异常,您可以将.close()的调用放在try-catch块中。我建议不要压制异常。至少应该记录它们。