2017-04-20 1 views
-1

Cela devrait être facilement et rapidement responsable. Il s'agit de lancer des exceptions, et j'ai très peu de compréhension de ce sujet (parce que je suis novice).Probablement une requête très simplement à propos de lancer une exception

Le code ci-dessous représente les méthodes les plus importantes de mon programme simple «jeu de labyrinthe». Dans cette méthode, j'énumère (évidemment) les commandes possibles du clavier de l'utilisateur et donne les instructions pour leur exécution en appelant d'autres sous-méthodes. Évidemment, je veux que toutes les entrées du clavier qui ne sont pas "help", "status" ... "down" pour entraîner le message d'erreur au bas de la méthode. Je sais que ce que j'ai ici est bête et n'a aucun sens, mais c'est parce que je n'ai littéralement aucune idée de ce que je fais quand il s'agit de lancer des exceptions, et je suis trop paresseux pour faire une lecture sérieuse . Donc j'aimerais que quelqu'un puisse me dire comment écrire ce que je veux écrire ici.

public static void performAction(String action) throws IllegalArgumentException { 
    if (action.equalsIgnoreCase("help")) { 
     printHelp(); } 
    else if (action.equalsIgnoreCase("status")) { 
     printStatus(); } 
    else if (action.equalsIgnoreCase("board")) { 
     printBoard(); } 
    else if (((action.charAt(0) == 'S') || (action.charAt(0) == 's')) && ((action.charAt(1) == 'a') || (action.charAt(1) == 'A')) && ((action.charAt(2) == 'v') || (action.charAt(2) == 'V')) && 
    ((action.charAt(3) == 'e') || (action.charAt(3) == '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\'.", fileName); 
      return; } } 
    else if (action.equalsIgnoreCase("left")) { 
     int a = getCurrentXPosition(); 
     int b = getCurrentYPosition(); 
     moveTo((a - 1), b); } 
    else if (action.equalsIgnoreCase("right")) { 
     int a = getCurrentXPosition(); 
     int b = getCurrentYPosition(); 
     moveTo((a + 1), b); } 
    else if (action.equalsIgnoreCase("up")) { 
     int a = getCurrentXPosition(); 
     int b = getCurrentYPosition(); 
     moveTo(a, (b - 1)); } 
    else if (action.equalsIgnoreCase("down")) { 
     int a = getCurrentXPosition(); 
     int b = getCurrentYPosition(); 
     moveTo(a, (b + 1)); } 
    else { 
     try {} 
    catch (IllegalArgumentException e) { 
     System.err.printf("Error: Could not find command \'%s\'.\nTo find the list of valid commands, please type 'help'. \n", action); } 
    } 
    } 
+1

'else {throw new IllegalArgumentException (yourMessage)}' – SomeJavaGuy

+0

Comment est-ce différent à votre question précédente? http://stackoverflow.com/questions/43513726/how-to-limit-the-string-arguments-that-a-method-can-use-to-a-fixed-list –

+0

Si vous voulez juste imprimer l'erreur message, vous n'avez pas besoin de lancer une exception. Imprimez simplement le message d'erreur dans le bloc 'else'. – khelwood

Répondre

0

else { System.err.printf ("Erreur:.. Impossible de trouver la commande \ '% s \' \ nPour trouver la liste des commandes valides, s'il vous plaît taper 'help' \ n", l'action)

throw IllegalArgumentException; } Ce consignera le message puis quittez la méthode en lançant IllegalArgumentException exception