我有以下代码抛出
try
{
fileInfo.CopyTo(destination, true);
}
catch (IOException ioex)
{
}
Log4net日志:
35552|384|1|ERROR| at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
我需要吃这个例外而不记录它。我需要压制这个错误信息。
怎么做?
答案 0 :(得分:1)
我怀疑你需要查看Log4net以查看是否有办法既可以记录未处理的异常(如果这是所需的),也可以告诉它忽略特定位置的异常。
为什么要特别隐藏这个?如果是因为这种情况发生了很多并且用无用的信息填满了日志,那么你可能想要在调用CopyTo
之前做一些验证以确保它有成功的机会(即路径有效,文件存在,等等)。这也将减少首先抛出的异常数量。例外情况在性能方面有些昂贵,因此如果可以,您可能希望防止它们发生。
正如我在对该问题的评论中提到的那样,你无法完全删除异常处理,因为在检查现有文件和实际调用CopyTo
之间,其他程序总是有可能删除该文件,但它应该是极为罕见。
如果这种情况没有经常发生和/或您已经在进行检查,那么偶尔记录会有什么危害吗?
答案 1 :(得分:0)
将函数调用放入try / catch中,捕获有问题的异常,并提供一个空块:
try
{
fileInfo.CopyTo(destination, true);
}
catch (Exception)
{
// do nothing
}
请注意,捕获异常(而不是正确的子类)是可怕的做法。
好吧,在我写这篇文章时,这个问题被悄悄地编辑了。我不清楚log4net是否记录了通过CLR的所有异常。我将很快删除它,但是现在我将其留下以备进一步评论。