Ответ 1
Вы должны добавить "throws IOException" к вашему основному методу:
public static void main(String[] args) throws IOException {
Вы можете прочитать немного больше об проверенных исключениях (которые специфичны для Java) в JLS.
У меня есть следующий простой код:
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 имеет функцию "проверенные исключения". Это означает, что есть определенные исключения, а именно те, которые являются подклассом Exception, но не RuntimeException, так что если метод может их бросить, он должен перечислить их в своем объявлении throw, скажем: void readData() выдает исключение IOException. IOException является одним из тех.
Таким образом, когда вы вызываете метод, который перечисляет IOException в объявлении throws, вы должны либо перечислить его в своем собственном объявлении броска, либо поймать его.
Обоснование наличия проверенных исключений заключается в том, что для некоторых видов исключений вы не должны игнорировать тот факт, что они могут произойти, потому что их происходит довольно обычная ситуация, а не программная ошибка. Таким образом, компилятор помогает вам не забывать о возможности возникновения такого исключения и требует, чтобы вы каким-то образом его обрабатывали.
Однако не все проверенные классы исключений в стандартной библиотеке Java подходят под это обоснование, но это совершенно другая тема.
Повторите попытку с помощью этого фрагмента кода:
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);
}