Java异常和错误处理

时间:2015-12-15 21:33:59

标签: java error-handling exception-handling

在这里编程初学者,我遇到了错误/异常处理的问题,因为我不知道怎么做。对于我的菜单系统(下面的代码),我希望它在输入1-6以外的任何内容时提醒用户,是否尝试捕获最佳方法?有人能告诉我应该如何实施吗?

 do
            if (choice == 1) {
                System.out.println("You have chosen to add a book\n");
                addBook();
            }
            ///load add options
            else if (choice == 2) {
                System.out.println("Books available are:\n");
                DisplayAvailableBooks();         //call method
            }
            ////load array of available books
            else if (choice == 3) {
                System.out.println("Books currently out on loan are:\n");
                DisplayLoanedBooks();       //call method
            }
            //display array of borrowed books
            else if (choice == 4) {
                System.out.println("You have chosen to borrow a book\n");
                borrowBook();      //call method
            }
            //enter details of book to borrow plus student details
            else if (choice == 5) {
                System.out.println("What book are you returning?\n");
                returnBook();     //call method
            }
            //ask for title of book being returned
            else if (choice == 6) {
                System.out.println("You have chosen to write details to file\n");
                saveToFile();         //call method
            }

            while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 5 && choice != 6) ;
            menu();
            keyboard.nextLine();//catches the return character for the next time round the loop
            }

2 个答案:

答案 0 :(得分:0)

尝试切换声明

switch() {
    case 1:
        addBook();
        break;
    // etc ...
    default:
        System.out.println("Not a valid choice");
        break;
}

此开关也可以使用字符串,因此您可以在菜单中添加 q 以退出,或者 b 返回以制作多级菜单。

这可能是需要的,因为来自readline的所有用户输入都被认为是字符串所以除非你将输入转换为int,这需要包装在try catch中,这是更好的默认选项将处理任何意外的用户输入。

case "1":& case "q":

答案 1 :(得分:0)

更“干净”,更容易理解的方式就是这样

if(choice < 1 || choice > 6) {
    //invalid input handling
}

while (choice >= 1 && choice <=6) {
    // choice handling and program execution
}

您可以尝试的另一个选项是使用switch语句,您可以在这里学习 http://www.tutorialspoint.com/javaexamples/method_enum.htm

其他评论是正确的,这不是异常处理,而是非常不受欢迎的输入处理。异常处理将是例如输入null并抛出null异常错误。在那里你可以使用try catch来继续运行你的程序,即使抛出错误。