Почему я получаю «Необработанный тип исключения IOException»?

У меня есть следующий простой код:

import java.io.*; class IO { public static void main(String[] args) { BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; while ((userInput = stdIn.readLine()) != null) { System.out.println(userInput); } } } 

И я получаю следующее сообщение об ошибке:

 ---------- 1. ERROR in io.java (at line 10) while ((userInput = stdIn.readLine()) != null) { ^^^^^^^^^^^^^^^^ Unhandled exception type IOException ---------- 1 problem (1 error)[email protected]:~/work/java$ mcedit io.java 

У кого-нибудь есть идеи, почему? Я просто попытался упростить код, указанный на веб-сайте суммы ( здесь ). Я упростил?

Вы должны добавить «throws IOException» к вашему основному методу:

public static void main(String[] args) throws IOException {

Вы можете прочитать немного больше об проверенных исключениях (которые специфичны для Java) в JLS .

Java имеет функцию «проверенные исключения». Это означает, что есть определенные исключения, а именно те, которые являются подclassом Exception, но не RuntimeException, так что если метод может их бросить, он должен перечислить их в своем объявлении throw, скажем: void readData () выдает исключение IOException. IOException является одним из таких.

Таким образом, когда вы вызываете метод, который перечисляет IOException в объявлении throws, вы должны либо перечислить его в своем собственном объявлении броска, либо поймать его.

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

Однако не все проверенные classы исключений в стандартной библиотеке Java подходят под это обоснование, но это совершенно другая тема.

Повторите попытку с помощью этого fragmentа кода:

 import java.io.*; class IO { public static void main(String[] args) { try { BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; while ((userInput = stdIn.readLine()) != null) { System.out.println(userInput); } } catch(IOException ie) { ie.printStackTrace(); } } } 

Использование try-catch-finally лучше, чем использование throws . Найти ошибки и отладки проще, когда вы используете try-catch-finally .

Чтение ввода с клавиатуры аналогично загрузке файлов из Интернета, система java io открывает соединения с источником данных, которые нужно читать с помощью InputStream или Reader, вы должны обрабатывать ситуацию, когда соединение может прерываться с помощью IOExceptions

Если вы хотите точно знать, что значит работать с InputStreams и BufferedReader, это видео показывает это

добавьте «throws IOException» в ваш метод следующим образом:

 public static void main(String args[]) throws IOException{ FileReader reader=new FileReader("db.properties"); Properties p=new Properties(); p.load(reader); } 
  • Предоставить пароль SU в сценарии bash, в скрипте?
  • Использование fflush (stdin)
  • Очистить stdin перед чтением
  • Как читать из stdin с помощью fgets ()?
  • Как заставить ssh получить пароль от stdin
  • Функция fflush (stdin) не работает
  • Сравнить два дерева каталогов
  • Чтение из stdin flush stdout?
  • nodejs, как читать нажатия клавиш от stdin
  • Стоит ли вообще заглядывать в буфер stdin?
  • Чтение Eclipse stdin (System.in) из файла
  • Interesting Posts

    OSX 'open with' bash script

    Соответствующий шаблон является строгим, но для элемента ‘tx: annotation-driven’

    Как заполнить / создать экземпляр массива C # с одним значением?

    Установка Windows XP застряла на «пожалуйста, подождите …» с 500g HD

    Синхронизированный метод Java на объекте или методе?

    Поиск цитируемых строк с экранированными кавычками в C # с использованием регулярного выражения

    jQuery: выбрать class элемента и идентификатор одновременно?

    межпоточная связь в java

    Как вы можете использовать рецепт шеф-повара для установки переменной окружения?

    Почему мой хеш командной строки отличается от хеш-результатов онлайн MD5?

    Как нарисовать форму волны музыкального плеера Android?

    Java: массив примитивных типов данных не автобокс

    Как загрузить ВСЕ элементы запуска перед входом в рабочий стол Windows 8?

    Как сделать переменный макрос (переменное количество аргументов)

    Выравнивание статических строковых литералов

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