Почему я получаю «должен быть пойман или объявлен брошен» в моей программе?

Я уже давно работаю над этой программой, и мой мозг жарится. Я мог бы использовать какую-то помощь от кого-то, кто заглянул внутрь.

Я пытаюсь сделать программу, которая читает текстовый файл по строкам, и каждая строка превращается в ArrayList поэтому я могу получить доступ к каждому токену. Что я делаю не так?

 import java.util.*; import java.util.ArrayList; import java.io.*; import java.rmi.server.UID; import java.util.concurrent.atomic.AtomicInteger; public class PCB { public void read (String [] args) { BufferedReader inputStream = null; try { inputStream = new BufferedReader(new FileReader("processes1.txt")); String l; while ((l = inputStream.readLine()) != null) { write(l); } } finally { if (inputStream != null) { inputStream.close(); } } } public void write(String table) { char status; String name; int priority; ArrayList tokens = new ArrayList(); Scanner tokenize = new Scanner(table); while (tokenize.hasNext()) { tokens.add(tokenize.next()); } status = 'n'; name = tokens.get(0); String priString = tokens.get(1); priority = Integer.parseInt(priString); AtomicInteger count = new AtomicInteger(0); count.incrementAndGet(); int pid = count.get(); System.out.println("PID: " + pid); } } 

Я собираюсь высунуть глаза. Я получил три ошибки:

 U:\Senior Year\CS451- Operating Systems\Project1 PCB\PCB.java:24: unreported exception java.io.IOException; must be caught or declared to be thrown inputStream.close();} ^ U:\Senior Year\CS451- Operating Systems\Project1 PCB\PCB.java:15: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown inputStream = new BufferedReader(new FileReader("processes1.txt")); ^ U:\Senior Year\CS451- Operating Systems\Project1 PCB\PCB.java:18: unreported exception java.io.IOException; must be caught or declared to be thrown while ((l = inputStream.readLine()) != null) { ^ 

Что я делаю не так?

Когда вы работаете с I / O в Java, большую часть времени вы должны обрабатывать IOException, которое может возникать в любое время, когда вы читаете / пишите или даже закрываете stream.

Вы должны поместить свой чувствительный блок в блок catch catch try и обрабатывать это исключение.

Например:

 try{ // All your I/O operations } catch(IOException ioe){ //Handle exception here, most of the time you will just log it. } 

Ресурсы:

  • oracle.com – Урок: Исключения

Java проверяет спецификации исключений во время компиляции. Вы должны либо поймать исключение, либо объявить его в вашей сигнатуре метода. Вот как вы заявляете, что это может быть выбрано из вашего метода:

  public void read (String [] args) throws java.io.IOException { 

Поймайте исключение, если ваш метод должен что-то сделать в ответ. Объявите его как выброшенное, если ваш вызывающий абонент должен знать об ошибке.

Они не являются взаимоисключающими. Иногда полезно поймать исключение, сделать что-то и перебросить исключение или новое исключение, которое обертывает оригинал («причина»).

RuntimeException и его подclassы не должны быть объявлены.

Хорошие IDE будут либо создавать блоки catch для вас, либо добавить исключение в объявление метода.

Имейте в виду, что если вы добавите исключения в объявление метода в соответствии с решением Colin, любой метод, который вызывает ваш метод, также должен иметь подходящий блок catch или объявить исключение в объявлении метода.

Вы могли бы сделать

 try{ // All your I/O operations } catch(Exception e){ //Handle exception here, most of the time you will just log it. } 

в общем, это не плохая идея, чтобы поймать сам class некоторое время и решает логику в catch или сделать instanceof, если вам нужен очень специфический журнал.

У меня была такая же проблема. Я решил это, добавив библиотеку весны «org.springframework.core»,

  • Как исправить java.net.SocketException: Неработающая труба?
  • Ловить несколько исключений сразу?
  • Visual Studio: как разбить обработанные исключения?
  • java.io.NotSerializableException
  • Бизнес-объекты, проверки и исключения
  • UnsupportedOperationException при попытке удалить из списка, возвращаемого Array.asList
  • исключение catch, которое выбрасывается в другой stream
  • Коллекция была изменена; операция enums не может выполняться в ArrayList
  • Как я могу безопасно создать вложенный каталог в Python?
  • Почему неправильный пароль приводит к тому, что «Заполнение недопустима и не может быть удалено»?
  • Почему я получаю UnsupportedOperationException при попытке удалить элемент из списка?
  • Interesting Posts

    Какие селектора CSS3 действительно поддерживают jQuery, например: nth-last-child ()?

    одновременное чтение и запись файла в C #

    Существует ли ExecutorService, который использует текущий stream?

    Как преобразовать Блестящее приложение, состоящее из нескольких файлов, в легкоansible и воспроизводимый пример Shiny?

    .Net DefaultValueAttribute on Properties

    Преобразование из IEnumerable в List

    Все окна на экране одновременно в Windows XP

    Можно ли программно удалить пакет на Android?

    Как создать представление моментального снимка для какого-либо проекта или streamа в ClearCase?

    Установить цвет фона текстового поля WPF в коде C #

    Создание виртуального каталога на одном и том же веб-приложении azure

    Почему и когда нам нужно связывать функции и eventHandlers в React?

    Гармоническая графика в текстовом режиме (только для предварительной загрузки / BIOS), а не в Windows

    Как изменить текст CheckBox в списке?

    Знак доллара США

    Давайте будем гением компьютера.