java学习TryCatch
我是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 block,因为我们还没有被告知整个异常情况。这只是我们被要求做的一个练习。我想用try-catch块替换if-else语句。。。可能吗
# 1 楼答案
代码中唯一可能引发异常的部分是调用:
根据JavaDocs,这可能会引发以下异常:
因此,如果您想让代码考虑引发这些异常的可能性,您应该这样重新编写:
一般来说,你希望你的“捕获”块从特定的或很可能发生在不太可能/更一般的性质开始
您还可以“抛出”异常,这样无论异常发生在哪个方法中都不会处理它——调用导致异常的方法的方法必须处理它(或者再次抛出它,等等,直到它到达Java运行时)
如果您希望替换“如果”语句,我建议您使用“切换”语句:
# 2 楼答案
在这段代码中添加异常不会增加太多价值。 我能想到的是这样的:
# 3 楼答案
当出现编程错误时,应该抛出运行时异常,通常不应该捕获它们,除非您在顶层捕获以报告错误
类型化/显式异常是在方法调用上修饰的,应该存在,以便调用方可以对其采取一些操作
在上面的代码中,没有一个地方感觉它应该使用异常处理
正如Patrick所指出的,您通常不希望使用异常来进行流控制