如果你编写一个包含try-catch块的非main方法,以及稍后在另一个方法中,你想调用那个方法,那么程序是什么?我无法理解。
我自己的情况如下:
对于一个简单的Java'迷宫游戏',我写了一个名为'saveGame(String mazeGameSave)的静态void方法抛出IO Exception'。这个方法包含一个'try'块,我在其中编写了将'board'(作为一个二维数组)打印到一个新文件所需的所有代码,然后是一个简短的'catch'块,我刚打印出一个错误消息(您可以在下面看到同一个消息)。
显然,我想在另一个用于处理其他方法的静态void方法中调用此方法,这是由用户输入指定的,我完全按照下面的说明执行此操作,其中String“action”是包含此块的静态void方法的参数。
if (action.charAt(0) == ('S' | 's')
&& action.charAt(1) == ('a' | 'A')
&& action.charAt(2) == ('v' | 'V')
&& action.charAt(3) == ('e' | 'E')
&& action.charAt(4) == ' ') {
String [] parts = action.split(" ");
String saveCommand = parts[0];
String fileName = parts[1];
try {
saveGame(fileName);
} catch (IOException e) {
System.err.printf("Error: Could not save the current game configuration to \'%s\'. \n", fileName);
}
}
根据我的评论者的建议,这里是saveGame()代码:
public static void saveGame (String mazeGameSave) throws IOException {
File save = new File(mazeGameSave);
try {
PrintWriter output = new PrintWriter("mazeGameSave");
output.printf(lives + " " + steps + " " + gold + " " + boardRows + "\n");
for (int j = 0; j < boardRows; j ++) {
for (int k = 0; k < columns; k ++) {
output.print(board[j][k]);
}
output.print("\n");
}
output.close();
output.printf("Successfully saved the current game configuration to \'%s\'.", mazeGameSave);
}
catch (IOException e) {
System.err.printf("Error: Could not save the current game configuration to \'%s\'.", mazeGameSave);
return;
}}
所以这个关键的愚蠢方面是我在performAction(action)方法中写出了与我在原始saveGame(...)方法中完全相同的'catch'块。这不起作用......那我该怎么做???
答案 0 :(得分:0)
从saveGame()中删除throws IOException
clausule。
您已经在catch (IOException e){}
区块中捕获了IOException。
抛出 clausule意味着该方法可以在执行期间抛出异常,因此当您在另一个方法中调用该方法时,您需要通过try catch块包围该调用。