我正在做一些关于异常处理的练习,但没有任何工作。我想知道带有return的方法应该如何实现异常,例如:
public class Class{
double n1, n2, result;
public double sum(double n1, double n2){
this.n1 = n1;
this.n2 = n2;
result = n1 + n2;
return result;
}
}
这将是类和方法,然后......如果我想做一个例外,确保不输入任何字母(扫描器将在主类中)。
我尝试了以下代码:
公共双和(双n1,双n2){
try{
this.n1 = n1;
this.n2 = n2;
result = n1 + n2;
}catch(NumberFormatException e){
System.out.println("Error!");
return 0;
}
return result;
}
但每当我执行此操作并输入一个字母时,就会出现以下错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextDouble(Scanner.java:2456)
at lista05excecoes.Principal.main(Principal.java:17)
Java Result: 1
当我希望它只输出消息ERROR
时答案 0 :(得分:2)
您展示的代码不负责抛出异常;它只能计算总和。
从堆栈跟踪中,main
方法包含使用Scanner
引发异常的代码。 Scanner
找到非数字输入并抛出异常。将try / catch块放在nextDouble
方法周围,而不是将2个数字相加的代码。
答案 1 :(得分:0)
抛出的异常与您尝试捕获的输入不同。这就是为什么它打印整个事情而不仅仅是"错误"。
此外,如果要将两个变量一起添加到一起,为什么需要存储它们?