我正在尝试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
}
答案 0 :(得分:2)
我假设您的错误是经过深思熟虑的,因此我将使用您自己的代码来制作您要求的用法示例。因此,有一个正在运行的程序仍然是你的责任。
执行异常处理机制,以便在达到某些错误条件时抛出异常,就像您的情况一样。假设您的方法被称为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等)捕获抛出的异常,并让你采取自己的客户端操作,即如果你使用swing或添加一个显示一个JOptionPane如果您使用JSF作为您的视图技术,则会面临消息。
请记住,InvalidInputException
是一个必须扩展Exception的类。
答案 1 :(得分: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);
}
}