我有一个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
引发的错误)?