Java 对调用包含';试试catch';阻碍

Java 对调用包含';试试catch';阻碍,java,try-catch,calling-convention,Java,Try Catch,Calling Convention,如果您编写了一个包含try-catch块的非main方法,然后在另一个方法中调用该方法,那么过程是什么?我想不出来 我自己的情况如下: 对于一个简单的Java“迷宫游戏”,我编写了一个名为“saveGame(stringmazegamesave)抛出IO异常”的静态void方法。此方法包含一个“try”块,其中我编写了将“board”(作为二维数组)打印到新文件所需的所有代码,然后是一个简短的“catch”块,在该块中我刚刚打印了一条错误消息(与下面看到的相同) 显然,然后我想在另一个静态voi

如果您编写了一个包含try-catch块的非main方法,然后在另一个方法中调用该方法,那么过程是什么?我想不出来

我自己的情况如下:

对于一个简单的Java“迷宫游戏”,我编写了一个名为“saveGame(stringmazegamesave)抛出IO异常”的静态void方法。此方法包含一个“try”块,其中我编写了将“board”(作为二维数组)打印到新文件所需的所有代码,然后是一个简短的“catch”块,在该块中我刚刚打印了一条错误消息(与下面看到的相同)

显然,然后我想在另一个静态void方法中调用这个方法,该方法是为处理用户输入指定的其他方法而设置的,正如您在下面看到的一样,我这样做了,其中字符串“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()代码:

publicstaticvoidsavegame(stringmazegamesave)抛出IOException{
文件保存=新文件(mazeGameSave);
试一试{
PrintWriter输出=新的PrintWriter(“mazeGameSave”);
output.printf(lives+“”+steps+“”+gold+“”+boardRows+“\n”);
对于(int j=0;j

因此,这一点的关键在于,我在performation(action)方法中写出了与我在原始saveGame(…)方法中完全相同的“catch”块。这不管用。。。那么我该怎么办呢?

从saveGame()中删除
抛出IOException
子句

您已经在
catch(IOException e){}
块中捕获了IOException


Throws子句意味着该方法可以在执行过程中抛出异常,因此当您在另一个方法中调用该方法时,需要围绕try-catch块调用。

问题是什么?您想在saveGame()和performAction()中执行catch块吗?不,我只是不知道如何以一种有效的方式调用方法saveGame(…)。@NoamHudson生成的错误在两个级别上处理。就这样。调用
saveGame()
方法时您面临什么问题?如果我只是尝试调用saveGame()方法,而不使用任何类型的“try{}catch{}”东西,我在编译时会遇到以下错误:“未报告的异常IOException;必须捕获或声明为抛出saveGame(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;
        }}