У меня есть 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
)?