6

我正在尝试 Java 的异常处理。

我无法从文档中理解如何执行此操作,但我想要做的是检测无效输入,以便我的开关在激活默认情况时引发错误。这对我来说可能是不正确的逻辑,但我想知道是否有人可以用简单的英语将我推向正确的方向。

char choice = '0';
while (choice != 'q'){
     printMenu();
     System.in.read(choice);

     case '1': DisplayNumAlbums();
     case '2': ListAllTitles();
     case '3': DisplayAlbumDetail();
     case 'q': System.out.println("Invalid input...");
     return;
     default: System.out.println("Invalid input...");
     //Exception handling here
     //Incorrect input
 }            
4

2 回答 2

4

我假设您的错误是经过深思熟虑的,因此我将使用您自己的代码来制作您要求的用法示例。因此,拥有一个正在运行的程序仍然是您的责任。

完成异常处理机制是为了让您在遇到某些错误条件时抛出异常,就像您的情况一样。假设您的方法被调用choiceOption,您应该这样做:

public void choiceOption() throws InvalidInputException {
    char choice = "0";

    while (choice != "q"){
        printMenu();

        System.in.read(choice);
        switch(choice){
        case "1": DisplayNumAlbums();
        case "2": ListAllTitles();
        case "3": DisplayAlbumDetail();
        case "q": System.out.println("Invalid input...");
                  return;
        default: System.out.println("Invalid input...");
                 throw new InvalidInputException();
        }
    }
}

这使您可以在客户端捕获抛出的异常(您拥有的任何客户端:文本、胖客户端、Web 等)并让您采取自己的客户端操作,即如果您正在使用摇摆,则显示 JOptionPane 或添加面孔消息,如果您正在使用 JSF 作为您的视图技术。

请记住,这InvalidInputException是一个必须扩展异常的类。

于 2012-08-25T04:22:46.470 回答
2

如果您的代码在方法内,您可以声明该方法抛出异常,

void method throws Exception(...){}

并且方法的调用必须在 try-catch 块中

try{
 method(...);
}catch(SomeException e){
 //stuff to do
}

或者你可以

while(){
 ...
 try{
  case...
  default:
   throw new IllegalArgumentException("Invalid input...");
 }catch(IllegalArgumentException iae){
  //do stuff like print stack trace or exit
  System.exit(0);
 }
}
于 2012-08-25T04:28:44.533 回答