如何捕获System.IO.FileSystemWatcher引发的异常

时间:2018-09-25 20:06:41

标签: c# filesystemwatcher

我有一个System.IO.FileSystemWatcher,它监视某些文件夹中的文件更改。

有时(而且我不太确定怎么做),会创建/重命名格式错误的文件,并且会引发异常。

我不知道(或控制)谁创建了格式错误的文件名,我什至不知道他们是如何做到的。

但是我想在那些极端情况下保护我的代码。

在我的应用程序存在之前,AppDomain.CurrentDomain.UnhandledException捕获到的堆栈跟踪。

Stack Trace:
    at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
    at System.IO.Path.GetFileName(String path)
    at System.IO.FileSystemWatcher.MatchPattern(String relativePath)
    at System.IO.FileSystemWatcher.NotifyFileSystemEventArgs(Int32 action, String name)
    at System.IO.FileSystemWatcher.CompletionStatusChanged(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* overlappedPointer)
    at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

CheckInvalidPathChars中的实际错误:

...
if (PathInternal.HasIllegalCharacters(path, checkAdditional))
    throw new ArgumentException(Environment.GetResourceString("Argument_InvalidPathChars"));
...

该错误发生在调用委托之前。

那么,如何捕获FileSystemWatcher(由System.IO.Path引发的错误)?

0 个答案:

没有答案