【问题标题】:Handle IOException inside function处理函数内部的 IOException
【发布时间】:2021-03-31 09:10:20
【问题描述】:

我有一种方法可以使用库 FileUtils 将一些文件从共享内存复制到内部应用程序内存。

我们的目标是处理 IOException 以免导致应用崩溃:如果某些文件没有从总数中复​​制出来是可以接受的。

在下面的第二个sn-p中有处理异常的被调用方法。

我需要知道两件事:

a) 有没有办法只在被调用的方法中处理异常 而不是也在调用代码中?

b) 您认为异常处理是正确的还是我需要添加一些其他代码?

下面是代码:

try {
    copyfilesfromshared(context);
} catch (IOException e) {
    e.printStackTrace();
}


public void copyfilesfromshared(Context context) throws IOException {

    for (int ii = 0; ii < numfiles; ii++) {
        try {
            FileUtils.copyFileToDirectory(files[ii], dirwrite);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

【问题讨论】:

    标签: android ioexception


    【解决方案1】:

    有没有办法只在被调用的方法中而不在调用代码中处理异常?

    如果您在copyfilesfromshared() 函数中处理异常,则无需声明throws IOException

    public void copyfilesfromshared(Context context) {
        for (int ii = 0; ii < numfiles; ii++) {
            try {
                FileUtils.copyFileToDirectory(files[ii], dirwrite);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    那么就可以正常使用了,不用再声明try {...} catch(...)

     copyfilesfromshared(context);
    

    您认为异常处理是正确的还是我需要添加一些其他代码?

    这对我来说看起来不错,但最好检查 FileUtils.copyFileToDirectory 的签名,如果它也抛出任何其他异常,您可能也想在这里捕获。

    除此之外,您想要处理异常完全在您这边,但通常越早越好。

    【讨论】:

      【解决方案2】:

      嘿,

      第一个问题

      a) 有没有办法只在被调用的方法中处理异常 并且不在调用代码中?

      在从被调用方法抛出 IOException 或 在方法内部实现 try/catch。

      这就是你的问题 你选择了两个选项而不是一个,所以只选择一个。

      还有大约 2 个问题

      b) 在您看来异常处理是正确的还是我需要 添加一些其他代码?

      此时异常处理是最好的,所以不要想其他的想法

      仅此而已!

      【讨论】:

        猜你喜欢
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 2013-08-10
        • 1970-01-01
        相关资源
        最近更新 更多