Что бы вы сказали, это лучший способ отключить программу после того, как поймать исключение и позаботиться об этом в главной функции?Каков наилучший способ для завершения программы по ошибке?
- возвращение
- System.exit (...)
- вновь бросить исключение
- бросить пользовательских исключений в качестве оболочки
- исключение при выполнении
что-то еще
public static List<String> readFile(String file) throws NoSuchFileException, EOFException, IOException { Path p = Paths.get(file); if (!Files.exists(p)) { throw new NoSuchFileException(file); } else if (!Files.isRegularFile(p)) { throw new NoRegularFileException(file); } else if (!Files.isReadable(p)) { throw new AccessDeniedException(file); } else if (Files.size(p) == 0) { throw new EOFException(file); } return Files.readAllLines(p); } public static void main(String[] args) { try { if (args.length != 2) { System.out.println("The proper use is: java MyProgram file1.txt file2.txt"); return; } List<List<String>> files = new ArrayList<>(); for (String s : args) { try { files.add(Utilities.readFile(s)); } catch (NoSuchFileException e) { System.out.printf("File %s does not exist%n", e.getMessage()); System.exit(-1); } catch (NoRegularFileException e) { System.out.printf("File %s is not a regular file%n", e.getMessage()); throw e; } catch (AccessDeniedException e) { System.out.printf( "Access rights are insufficient to read file %s%n", e.getMessage() ); throw new ReadFileException(e); } catch (EOFException e) { System.out.printf("File %s is empty%n", e.getMessage()); throw new RuntimeException(e); } } //some other code } catch (Exception e) { e.printStackTrace(); }
Редактировать: Я должен был четко указать, что в конце будет основной код, поэтому я не могу просто закончить его.
Это зависит от того, как вы определяете «лучший». – Kayaman
Если улов является последней частью основного метода, выполняется улов, основной конец будет завершен. Если вы хотите сделать отчет об ошибках, вы всегда можете войти в блок catch. –
Я предлагаю вам лучше * зарегистрировать * исключение, а не просто выбросить его или распечатать сообщение об ошибке. Кроме того, при печати сообщений об ошибках следует использовать 'Error Stream' (' System.err.println («Ваше сообщение»); '). Помимо этого, выход из программы с помощью System.exit (1); 'должен выполнять эту работу. – Lefteris008