我是一个Java初学者,所以请容忍我
static int load = 100;
static int greet;
public void loadDeduct(int cLoad, int c){
int balance;
balance = cLoad - 7;
System.out.println("Your balance: " + balance);
}
public void loadDeduct(int tLoad){
int balance;
balance = tLoad - 1;
System.out.println("Your balance is: " + balance);
}
public static void main (String [] args){
int choice;
Scanner scan = new Scanner(System.in);
System.out.println("I'm a cellphone, what do you want to do?");
System.out.println("Press 1 to send SMS / Press 2 to Call");
choice = scan.nextInt();
CellphoneLoad N95 = new CellphoneLoad();
if (choice == 1){
N95.loadDeduct(load);
}else if (choice == 2){
N95.loadDeduct(load, greet);
}else{
System.out.println("Invalid Option!!!");
}如何在这个程序中实现异常处理?我不太确定如何使用catch块,因为我们还没有学习到整个异常的事情。这只是我们被要求做的一个练习。我想用try-catch块替换if else语句...这有可能吗?
发布于 2009-05-08 04:17:37
对于Java中的异常,需要考虑的一个重要原则是有两种类型: 1.运行时2.类型化/显式(因为缺少更好的词)
当存在编程错误时,应该抛出运行时异常,并且通常不应该捕获它们,除非您在顶层捕获以报告错误。
类型化/显式异常被修饰在方法调用上,并且应该在那里,以便调用者可以对它们采取一些操作。
在上面的代码中,没有一个地方让人感觉它应该使用异常处理。
正如Patrick指出的,您通常不希望使用异常来进行流控制。
发布于 2009-05-08 04:02:56
使用异常进行流控制并不理想。从您的代码中,不清楚可能会抛出哪些异常。也许你可以更详细一点。
发布于 2009-05-08 04:04:49
您的代码中唯一可能抛出异常的部分是调用:
scan.nextInt();根据JavaDocs,这可能抛出以下可能的异常:
因此,如果你想让你的代码考虑到抛出这些异常的可能性,你应该像这样重写它:
try {
choice = scan.nextInt();
}
catch (InputMismatchException e) {
System.out.println(e.getMessage());
}
catch (NoSuchElementException e) {
System.out.println(e.getMessage());
}
catch (IllegalStateException e) {
System.out.println(e.getMessage());
}通常,您希望您的"catch“块从特定的或很可能发生在不太可能/更一般的性质中开始。
您还可以“抛出”异常,这样无论发生异常的方法都不会处理它--调用导致异常的方法的方法必须处理它(或者再次抛出它,直到它到达Java运行时)。
如果是您想要替换的"if“语句,我建议使用"switch”语句:
switch (choice) {
case 1: N95.loadDeduct(load);
break;
case 2: N95.loadDeduct(load, greet);
break;
default: System.out.println("Invalid Option!!!");
}https://stackoverflow.com/questions/838177
复制相似问题