- Исключение FileNotFoundException в Java
- 1. введение
- 2. Когда Возникает исключение?
- 3. Как с Этим справиться?
- 4. Примеры
- 4.1. Регистрация исключения
- 4.2. Создание исключения для конкретного бизнеса
- 4.3. Создание файла
- 5. Заключение
- Читайте ещё по теме:
- Исключение FileNotFoundException в Java
- 1. введение
- 2. Когда Возникает исключение?
- 3. Как с Этим справиться?
- 4. Примеры
- 4.1. Регистрация исключения
- 4.2. Создание исключения для конкретного бизнеса
- 4.3. Создание файла
- 5. Заключение
- Читайте ещё по теме:
Исключение FileNotFoundException в Java
Краткое и практическое руководство по FileNotFoundException в Java.
1. введение
В этой статье мы поговорим об очень распространенном исключении в Java – исключении FileNotFoundException .
Мы рассмотрим случаи, когда это может произойти, возможные способы лечения и некоторые примеры.
2. Когда Возникает исключение?
Как указано в документации API Java, это исключение может быть вызвано, когда:
- Файл с указанным именем пути не существуетне существует
- Файл с указанным именем пути существует , но недоступен по какой-либо причине (запрошена запись для файла только для чтения или разрешения не позволяют получить доступ к файлу)
3. Как с Этим справиться?
Прежде всего, принимая во внимание, что он расширяет java.io.IOException , который расширяет java.lang.Исключение , вам нужно будет справиться с ним с помощью блока try-catch , как и с любым другим проверенным E xception .
Затем, что делать (связано с бизнесом/логикой) внутри блока try-catch на самом деле зависит от того, что вам нужно сделать.
Возможно, вам это понадобится:
- Создание исключения для конкретного бизнеса: это может быть ошибка stopexecutionerror, но вы оставите решение в верхних слоях приложения (не забудьте включить исходное исключение)
- Предупредите пользователя диалогом или сообщением об ошибке: это не ошибка stopexecutionerror, поэтому достаточно просто уведомить
- Создание файла: чтение необязательного файла конфигурации, его поиск и создание нового файла со значениями по умолчанию
- Создайте файл по другому пути: вам нужно что-то написать, и если первый путь недоступен, попробуйте использовать отказоустойчивый
- Просто зарегистрируйте ошибку: эта ошибка не должна останавливать выполнение, но вы регистрируете ее для дальнейшего анализа
4. Примеры
Теперь мы рассмотрим несколько примеров, все из которых будут основаны на следующем тестовом классе:
public class FileNotFoundExceptionTest < private static final Logger LOG = Logger.getLogger(FileNotFoundExceptionTest.class); private String fileName = Double.toString(Math.random()); protected void readFailingFile() throws IOException < BufferedReader rd = new BufferedReader(new FileReader(new File(fileName))); rd.readLine(); // no need to close file >class BusinessException extends RuntimeException < public BusinessException(String string, FileNotFoundException ex) < super(string, ex); >> >
4.1. Регистрация исключения
Если вы запустите следующий код, он “зарегистрирует” ошибку в консоли:
@Test public void logError() throws IOException < try < readFailingFile(); >catch (FileNotFoundException ex) < LOG.error("Optional file " + fileName + " was not found.", ex); >>
4.2. Создание исключения для конкретного бизнеса
Далее приведен пример создания исключения для конкретного бизнеса, чтобы ошибка могла быть обработана на верхних уровнях:
@Test(expected = BusinessException.class) public void raiseBusinessSpecificException() throws IOException < try < readFailingFile(); >catch (FileNotFoundException ex) < throw new BusinessException( "BusinessException: necessary file was not present.", ex); >>
4.3. Создание файла
Наконец, мы попытаемся создать файл, чтобы его можно было прочитать (возможно, для потока, который непрерывно читает файл), но снова поймаем исключение и обработаем возможную вторую ошибку:
@Test public void createFile() throws IOException < try < readFailingFile(); >catch (FileNotFoundException ex) < try < new File(fileName).createNewFile(); readFailingFile(); >catch (IOException ioe) < throw new RuntimeException( "BusinessException: even creation is not possible.", ioe); >> >
5. Заключение
В этой быстрой записи мы видели, когда может возникнуть исключение FileNotFoundException и несколько вариантов его обработки.
Как всегда, полные примеры находятся на Github .
Читайте ещё по теме:
Исключение FileNotFoundException в Java
Краткое и практическое руководство по FileNotFoundException в Java.
1. введение
В этой статье мы поговорим об очень распространенном исключении в Java – исключении FileNotFoundException .
Мы рассмотрим случаи, когда это может произойти, возможные способы лечения и некоторые примеры.
2. Когда Возникает исключение?
Как указано в документации API Java, это исключение может быть вызвано, когда:
- Файл с указанным именем пути не существуетне существует
- Файл с указанным именем пути существует , но недоступен по какой-либо причине (запрошена запись для файла только для чтения или разрешения не позволяют получить доступ к файлу)
3. Как с Этим справиться?
Прежде всего, принимая во внимание, что он расширяет java.io.IOException , который расширяет java.lang.Исключение , вам нужно будет справиться с ним с помощью блока try-catch , как и с любым другим проверенным E xception .
Затем, что делать (связано с бизнесом/логикой) внутри блока try-catch на самом деле зависит от того, что вам нужно сделать.
Возможно, вам это понадобится:
- Создание исключения для конкретного бизнеса: это может быть ошибка stopexecutionerror, но вы оставите решение в верхних слоях приложения (не забудьте включить исходное исключение)
- Предупредите пользователя диалогом или сообщением об ошибке: это не ошибка stopexecutionerror, поэтому достаточно просто уведомить
- Создание файла: чтение необязательного файла конфигурации, его поиск и создание нового файла со значениями по умолчанию
- Создайте файл по другому пути: вам нужно что-то написать, и если первый путь недоступен, попробуйте использовать отказоустойчивый
- Просто зарегистрируйте ошибку: эта ошибка не должна останавливать выполнение, но вы регистрируете ее для дальнейшего анализа
4. Примеры
Теперь мы рассмотрим несколько примеров, все из которых будут основаны на следующем тестовом классе:
public class FileNotFoundExceptionTest < private static final Logger LOG = Logger.getLogger(FileNotFoundExceptionTest.class); private String fileName = Double.toString(Math.random()); protected void readFailingFile() throws IOException < BufferedReader rd = new BufferedReader(new FileReader(new File(fileName))); rd.readLine(); // no need to close file >class BusinessException extends RuntimeException < public BusinessException(String string, FileNotFoundException ex) < super(string, ex); >> >
4.1. Регистрация исключения
Если вы запустите следующий код, он “зарегистрирует” ошибку в консоли:
@Test public void logError() throws IOException < try < readFailingFile(); >catch (FileNotFoundException ex) < LOG.error("Optional file " + fileName + " was not found.", ex); >>
4.2. Создание исключения для конкретного бизнеса
Далее приведен пример создания исключения для конкретного бизнеса, чтобы ошибка могла быть обработана на верхних уровнях:
@Test(expected = BusinessException.class) public void raiseBusinessSpecificException() throws IOException < try < readFailingFile(); >catch (FileNotFoundException ex) < throw new BusinessException( "BusinessException: necessary file was not present.", ex); >>
4.3. Создание файла
Наконец, мы попытаемся создать файл, чтобы его можно было прочитать (возможно, для потока, который непрерывно читает файл), но снова поймаем исключение и обработаем возможную вторую ошибку:
@Test public void createFile() throws IOException < try < readFailingFile(); >catch (FileNotFoundException ex) < try < new File(fileName).createNewFile(); readFailingFile(); >catch (IOException ioe) < throw new RuntimeException( "BusinessException: even creation is not possible.", ioe); >> >
5. Заключение
В этой быстрой записи мы видели, когда может возникнуть исключение FileNotFoundException и несколько вариантов его обработки.
Как всегда, полные примеры находятся на Github .