Как перехватить исключения, выданные System.IO.FileSystemWatcher - PullRequest
0 голосов
/ 25 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...