2016-03-19 3 views
0

Привет, ребята, поэтому моя программа на самом деле не ломает никаких ошибок, т. Е. Когда я ввожу букву вместо допустимого числа, она улавливает ошибку, но она не возвращается обратно меню, он просто отображает утверждение. И когда я использую номер за пределами оператора switch, т. Е. 5, он просто возвращается в меню без отображения ошибки. Мой код ниже:Как сделать ошибку захвата программы в обработке исключений-Java

public void runMenu() { 
    Scanner Option = new Scanner (System.in); 
    int x = 1; 
    int Choice = 0; 
    do{ 
    try{ 
      System.out.println("Choose Option"); 
      System.out.println(""); 
      System.out.println("1: Create Account"); 
      System.out.println("2: Check Account"); 
      System.out.println("3: Take Action"); 
      System.out.println("4: Exit"); 

     System.out.println("Please choose"); 
     Choice= Option.nextInt(); 

    switch (Choice) //used switch statement instead of If else because more effective 
    { 
    case 1: 
     CreateAccount(); 
     break; //breaks iteration 
    case 2: 
     selectAccount(); 
     break; 
    case 3: 
     Menu(); 
     int choice = UserInput(); 
     performAction(choice); 
     break; 
    case 4: 
     System.out.println("Thanks for using the application"); 
     System.exit(0); 
    default: 
     throw new Exception(); 
    // x=2; //if code doesn't run successfully then x !=2 leading to exception 
} 
} 
+1

Зачем он должен возвращаться в меню в случае возникновения какого-либо исключения? Вы записали инструкцию 'return' в блоке catch – Rehman

+0

John - Обратите внимание, что последнее редактирование вопроса сделало код не компилируемым ... и как только вы исправите ошибки компиляции, поведение будет иным. Если вы хотите, чтобы люди помогали вам, не делайте этого. –

ответ

2

Дело 4 не закрыто перерывом, поэтому вы никогда не создаете исключение!

Вы должны иметь это в конце вашего коммутатора:

default: 
    throw new Exception(); 
    break; 

Кроме того, вы должны удалить возвращения из улова раздела.

catch (Exception e){ 
     System.err.println("Enter Correct Input"); 
     return ; 
    } 
+0

Дальше вы должны удалить ответ – Learner

+0

Я удалил возврат из секции catch, и он просто идет на сумасшедший., Он не останавливает цикл: s – John

+0

, что только когда я ввожу письмо, он отлично работает, когда его неправильный номер – John

0

Это действительно не так, как правило, вызывается исключение. Если вы хотите, чтобы программа просто возвращалась в меню, если пользователь вводит недопустимую опцию, вам нужно добавить только случай по умолчанию в цикл while. Для этого вам даже не нужно ваше x-целое. Если хотите, вы можете попробовать бросить новое исключение в случае по умолчанию.

import javax.swing.*; 
    import java.util.Arrays; 
    import java.util.Scanner; 

    public class runMenu { 
     public void runMenu() { 


      Scanner Option = new Scanner (System.in); 

      int Choice = 0; 

        System.out.println("Choose Option"); 
        System.out.println(""); 
        System.out.println("1: Create Account"); 
        System.out.println("2: Check Account"); 
        System.out.println("3: Take Action"); 
        System.out.println("4: Exit"); 



        System.out.println("Please choose"); 
        Choice= Option.nextInt(); 




        switch (Choice) //used switch statement instead of If else because more effective 
        { 
         case 1: 

          CreateAccount(); 
          break; //breaks iteration 


         case 2: 

          selectAccount(); 


          break; 

         case 3: 
          Menu(); 
          int choice = UserInput(); 
          performAction(choice); 

          break; 
         case 4: 
          System.out.println("Thanks for using the application"); 
          System.exit(0); 

          // x=2; //if code doesn't run successfully then x !=2 leading to exception 

          throw new Exception(); 

          break; 
         default: 
          System.out.println("Invalid option. Please try    

          again."); 

          throw new Exception(); 

          runMenu(); 

        } 
       } 

     } 

    } 
0

когда вы ввели номер, кроме 1-4, вы должны иметь опцию по умолчанию, повторно запустить вопросы после того, как вы на дисплее появляется сообщение об ошибке называют runMenu()

например,

case 4: 
     System.out.println("Thanks for using the application"); 
     System.exit(0); 
default: 
     println "Choose 1-4"; 
     runMenu() 

Надеюсь, это поможет.

Смежные вопросы