我正在处理涉及多个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);
}
}
这显然已经简化,可以处理其他异常。但是,创建一个"包装方法"并不是很合适。只是设计用于处理单个方法调用的异常。
我知道这可能被认为是主观的,但我觉得这里有正确的答案或替代路径。