赶上并吃一个例外

时间:2011-03-16 17:28:46

标签: c# .net exception log4net logging

我有以下代码抛出

try
{
    fileInfo.CopyTo(destination, true);
}
catch (IOException ioex)
{

}

Log4net日志:

35552|384|1|ERROR| at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

我需要吃这个例外而记录它。我需要压制这个错误信息。

怎么做?

2 个答案:

答案 0 :(得分:1)

我怀疑你需要查看Log4net以查看是否有办法既可以记录未处理的异常(如果这是所需的),也可以告诉它忽略特定位置的异常。

为什么要特别隐藏这个?如果是因为这种情况发生了很多并且用无用的信息填满了日志,那么你可能想要在调用CopyTo之前做一些验证以确保它有成功的机会(即路径有效,文件存在,等等)。这也将减少首先抛出的异常数量。例外情况在性能方面有些昂贵,因此如果可以,您可能希望防止它们发生。

正如我在对该问题的评论中提到的那样,你无法完全删除异常处理,因为在检查现有文件和实际调用CopyTo之间,其他程序总是有可能删除该文件,但它应该是极为罕见。

如果这种情况没有经常发生和/或您已经在进行检查,那么偶尔记录会有什么危害吗?

答案 1 :(得分:0)

将函数调用放入try / catch中,捕获有问题的异常,并提供一个空块:

try
{
    fileInfo.CopyTo(destination, true);
}
catch (Exception)
{
    // do nothing
}

请注意,捕获异常(而不是正确的子类)是可怕的做法。

好吧,在我写这篇文章时,这个问题被悄悄地编辑了。我不清楚log4net是否记录了通过CLR的所有异常。我将很快删除它,但是现在我将其留下以备进一步评论。

相关问题