我的 getChoice()
方法从控制台获取一个字符输入并将该字符返回给 main()
。
getChoice()
是否应该抛出异常并让 main()
处理它:
static char getChoice() throws IOException
{
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
return (char)br.read();
}
或者应该 getChoice()
捕获异常,处理它并返回一个字符:
static char getChoice()
{
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
char temp;
try {
temp = (char)br.read();
} catch(IOException exc) {
System.out.println("Invalid Input");
temp = (char)0;
}
return temp;
}
从设计的角度来看,哪种方法更好? 有更好的方法吗?
最佳答案
抛出异常对我来说似乎是更好的选择,因为在异常情况下返回默认值(或错误代码,如果你愿意)不会让调用者知道在读取用户输入时有错误.使用像 (char)0 这样的返回值作为错误代码会让您回到没有异常处理的语言。
也就是说,您应该考虑捕获 IOException
并抛出您自己的一些描述错误的异常。
例如:
static char getChoice() throws UserInputException
{
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
char temp = (char)0;
try {
temp = (char)br.read();
}
catch (IOException ioEx) {
throw new UserInputException ("Error reading input", ioEx);
}
return temp;
}
关于Java类设计和异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26570812/