Java - 带有return的方法应如何处理异常

时间:2014-10-06 16:28:36

标签: java exception methods

我正在做一些关于异常处理的练习,但没有任何工作。我想知道带有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

2 个答案:

答案 0 :(得分:2)

您展示的代码不负责抛出异常;它只能计算总和。

从堆栈跟踪中,main方法包含使用Scanner引发异常的代码。 Scanner找到非数字输入并抛出异常。将try / catch块放在nextDouble方法周围,而不是将2个数字相加的代码。

答案 1 :(得分:0)

抛出的异常与您尝试捕获的输入不同。这就是为什么它打印整个事情而不仅仅是"错误"。

此外,如果要将两个变量一起添加到一起,为什么需要存储它们?