2017-04-20 13 views
-1

try-catchブロックを含む非メインメソッドを作成し、後で別のメソッドの中でそのメソッドを呼びたい場合は、どのような手順ですか?私はそれを理解することはできません。簡単なJavaの迷路ゲーム」の'try-catch'ブロックを含むメソッドの呼び出しについて混乱しました

、私はと呼ばれる静的な無効方法「セーブデータ(文字列mazeGameSave)IO例外をスロー」を書いた:

私自身の場合は、次のようです。このメソッドには 'try'ブロックが含まれていました。ここでは 'board'(2-d配列として)を新しいファイルに出力するために必要なコードをすべて書きました。メッセージ(以下で見ることができるものと同じもの)。

明らかに、私は、ユーザー入力で指定された他のメソッドを処理するために設定された別の静的voidメソッドでこのメソッドを呼びたいと思っていました。このブロックを含むstatic 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); 
    } 
} 

だからこれの主要ダムの側面は、私はまったく同じに書き出されていることである

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; 
     }} 

提案は、ここでセーブデータ()のコードです』私の元のsaveGame(...)メソッドで行ったように、performAction(action)メソッドそして、これは動作しません...だから私は何をしますか?

+0

質問するには? saveGame()とperformAction()の両方でキャッチブロックを実行しますか? – sovas

+0

いいえ、文字通りsaveGame(...)メソッドを呼び出す方法が分かりません。 –

+0

@NoamHudson生成されているエラーは2つのレベルで処理されます。それでおしまい。 'saveGame()'メソッドを呼び出す際に直面する問題は何ですか? –

答えて

0

saveGame()からthrows IOExceptionクローズを削除します。

catch (IOException e){}ブロックで既にIOExceptionが発生しています。

clausuleは、メソッドが実行中に例外を投げることができることを意味例外ので、あなたは別で、そのメソッドを呼び出しているとき、あなたは、try catchブロックによってコールを囲む必要があります。

+0

ok!試してみます。ありがとう –

関連する問題