处理不同代码块中的相同IO异常

时间:2014-08-12 20:16:47

标签: c# winforms architecture exception-handling io

我正在处理涉及多个IO调用的WinForms项目。由于许多IO方法都容易出现异常(UnauthorizedAccess / file in use / etc.),因此IO负有很大的责任。

我想知道如何在代码中的多个位置处理相同的异常。例如,如果我在7个不同的代码块中调用FileInfo.CopyTo(),所有这些代码块都可以抛出UnauthorizedAccessException,我该如何处理呢?我知道普遍的共识要求只有在能够妥善处理的情况下才能捕获异常。我不确定"正确"处理UnauthorizedAccessException的方法,但我确实希望显示MessageBox通知用户该文件未被复制。

在这种情况下,我必须在CopyTo() / try语句中将7个调用包装到catch,并弹出相同的MessageBox 7次。为了避免重用代码,我首先想到的是创建这样的东西:

public void SafeCopy(FileInfo file, string targetPath)
    {
        try
        {
            file.CopyTo(targetPath);
        }
        catch (UnauthorizedAccessException ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

这显然已经简化,可以处理其他异常。但是,创建一个"包装方法"并不是很合适。只是设计用于处理单个方法调用的异常。

我知道这可能被认为是主观的,但我觉得这里有正确的答案或替代路径。

0 个答案:

没有答案