Лучшим вариантом будет сделать ваши проверки заранее, а не полагаться на исключения. Например:
if (Directory.Exists(SomeFolder))
{
Directory.Delete(SomeFolder, true);
}
Таким образом, вы, по крайней мере, пытаетесь уменьшить многие причины, по которым может быть выдано исключение IOException.
Редактировать: Не говоря уже о том, что моя опция устраняет необходимость обработки исключений, просто делает их истинными исключениями, а не просто частью обычного потока программы.
Обновление: так что из комментариев пример из ОП не подходит для идеи, которую я пытаюсь представить. Суть, которую я пытаюсь сделать, заключается в том, что лучше проверять возможные исключения, прежде чем они, кроме случаев, когда вы можете. Например:
if (object != null)
{
object.Value = true;
}
лучше, чем огромный перегруженный catch
(пример упрощен):
try
{
object.Value = true;
}
catch NullRefrenceException
{
...
}
catch Exception
{
...
}
Редактировать: Относительно обновления ОП о блокировках файлов. Я не верю, что здесь есть более конкретное ожидание, так что разбор сообщения - это, вероятно, ваш единственный вариант. Если вы не можете найти способ проверить блокировку на передней панели без исключения. Даже в этом случае состояние блокировки может измениться между проверкой и попыткой доступа.