我不明白为什么这个简单的方法不会捕获异常但抛出另一个异常。弹出的异常错误是java.util.InputMismatchException
。
我能做些什么来抓住IOException
?
public class Throwing {
public static void main(String[] args) {
try {
int x = getInt();
System.out.println(x);
} catch (IOException a) {
a.printStackTrace();
}
}
public static int getInt() throws IOException {
int a = 0;
System.out.println("Enter an interger: ");
Scanner input = new Scanner(System.in);
a = input.nextInt();
return a;
}
}
答案 0 :(得分:1)
如果您查看JavaDocs for Scanner#nextInt,您会看到它能够抛出InputMismatchException等等
但目标是我试图抛出IOException而不是InputMismatch。我可以对我的代码做些什么来帮助我扔掉它?
您需要捕获任何可能的异常并抛出一个新的IOException
,并将旧的Exception
作为原因。
public static int getInt() throws IOException
{
int a = 0;
System.out.println("Enter an interger: ");
Scanner input = new Scanner(System.in);
try {
a = input.nextInt();
} catch (InputMismatchException ime) {
throw new IOException("Could not get int from input", ime);
}
return a;
}
这是恕我直言,这不是最好的主意,因为您可能希望InputMismatchException
与创建IOException