Обнаружение причины сбоя File.mkdirs () - PullRequest
10 голосов
/ 22 сентября 2011

Если я вызываю один из методов File.mkdir() или File.mkdirs() в Java, и он возвращает false, есть ли способ узнать, почему каталог не был создан?

1 Ответ

4 голосов
/ 22 сентября 2011

Не совсем, нет. Если SecurityException НЕ выброшено, то наиболее вероятной причиной является опечатка в пути, то есть вы случайно указали родительский путь к новым каталогам, который как-то недопустим.

Я не думаю, что вы завернули его в блок try { ... } catch (Exception e), где вы не понимаете, что выбрасывается SecurityException, потому что вы ловите предка SecurityException, не так ли?

Если вы твердо уверены, что все выглядит правильно, и все равно не получается, я полагаю, вы могли бы просто поместить его в цикл, чтобы повторить, скажем, три раза. Если по-прежнему происходит сбой, и в зависимости от вашего приложения вы можете выдать какое-то предупреждение на уровне пользовательского интерфейса или записать ошибку в файл журнала (при условии, что вы можете записать в него).

Полагаю, возможно, что какая-то более глубокая проблема с вводом / выводом не позволяет ему работать, но помимо простого уведомления пользователя о сбое, вы не можете (или не должны) делать на уровне приложения. Если что-то более глубокое в неправильном вводе-выводе, это, скорее всего, проблема с системой / оборудованием / ОС, или что-то совершенно неожиданное, что вы не можете контролировать, например, сбой подсистемы / службы.

... и если это происходит, ответственность за исправление несет ИТ-специалист, а не ваше приложение. Если, конечно, ваше приложение каким-то образом вызывает сбой.

...