处理函数内部的 IOException

时间:2020-12-21 15:34:13

标签: android ioexception

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

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

在下面的第二个片段中有处理异常的被调用方法。

我需要知道两件事:

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();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

<块引用>

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

如果您在 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 的签名,如果它也抛出任何其他异常,您可能也想在这里捕获。

除此之外,您想要处理异常完全取决于您,但通常越早越好。

答案 1 :(得分:0)

嘿,

对于你的第一个问题

<块引用>

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

从被调用的方法或抛出 IOException 之间有一个选择 实现 try/catch 内部方法。

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

关于 2 个问题

<块引用>

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

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

仅此而已!!