我想知道抛出IOException的第一种方法是否是更好的方法,
像这样,但是我无法触发IOException来测试它。
public static String inputStr (String prompt) throws IOException
{
String inputStr = "";
System.out.print(prompt);
inputStr = stdin.readLine();
if (inputStr.length() == 0)
{
System.out.println("Error! Enter valid field!");
inputStr(prompt);
}
return inputStr;
}
或在方法内。
public static String inputStr (String prompt)
{
String inputStr = "";
System.out.print(prompt);
try
{
inputStr = stdin.readLine();
if (inputStr.length() == 0)
{
System.out.println("Error! Enter valid field!");
inputStr(prompt);
}
} catch (IOException e)
{
System.out.println("Error! Enter valid field!");
inputStr(prompt);
}
return inputStr;
}
是否需要包含自定义消息以防万一被抛出?重新回答这个问题Java - What throws an IOException我无法测试将会发生什么。
不确定这是否应该是codereview,因为我不确定它是否真的有效。
答案 0 :(得分:5)
如果stdin.readLine()
抛出IOException,尝试从stdin再次重新读取将不会成功:您将获得另一个IOException,使您的第二个片段进入无限递归循环,结束于StackOverflowError。
答案 1 :(得分:3)
您可以触发IOException进行测试。刚在if语句中添加了这个:
throw new IOException("Testing Failure");
至于你如何处理异常,它实际上取决于你是否想要当前的方法来处理它,或者你只是想将它传递给任何调用方法。