我在Windows的BlueJ工作。我尝试使用以下方法在Java中读取一个字符:
import java.util.Scanner;
import java.io.*;
public class Test{
public static void main(String args[]) {
InputStreamReader instream = new InputStreamReader (System.in);
BufferedReader stdin = new BufferedReader(instream);
char c = (char) stdin.read();
}
}
编译时,编译器发出错误:
必须捕获或声明未报告的异常
java.io.IOException;
我不明白这个问题。任何人都可以建议我正确地做到这一点。
答案 0 :(得分:3)
行stdin.read()
可能会抛出IOException
,这是错误消息告诉您的内容。您需要通过声明您的main
方法将其抛出来处理此问题:
public static void main(String args[]) throws IOException {
// ...
}
或使用IOException
/ main
这样处理try
内的catch
:
public static void main(String args[]) {
try {
InputStreamReader instream = new InputStreamReader (System.in);
BufferedReader stdin = new BufferedReader(instream);
char c = (char) stdin.read();
} catch (IOException ex) {
// handle error in some way
ex.printStackTrace();
}
}
答案 1 :(得分:0)
抓住例外。
public static void main(String args[]) {
try{
InputStreamReader instream = new InputStreamReader (System.in);
BufferedReader stdin = new BufferedReader(instream);
char c = (char) stdin.read();
}catch(IOException ioe){
ioe.printStackTrace();
// write your handling
}catch(Exception err){
err.printStackTrace();
}
}
//您可以使用catch块捕获相关的多个异常。如果您不确定特定异常,请捕获泛型异常。应首先处理所有Exception子类,并在最后捕获泛型 Exception 。
答案 2 :(得分:0)
使用try catch块处理代码中的IOException。你可以这样做。
import java.util.Scanner;
import java.io.*;
public class Test {
public static void main(String args[]) {
try {
InputStreamReader instream = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(instream);
char c = (char) stdin.read();
} catch (IOException ex) {
System.out.println("Error : " + ex.getMessage());
}
}
}