实现:输入两个整数,返回两数之商。
当输入正确时返回两数之商;当除数为0时,输出异常信息并返回0;在finally处,添加返回-10000;
实现效果如下:
package java_exception;
import java.util.Scanner;
public class TryDemoTwo {
public static int test() {
Scanner input = new Scanner(System.in);
System.out.println("=====运算开始=====");
try{
System.out.print("请输入第一个整数:");
int one = input.nextInt();
System.out.print("请输入第二个整数:");
int two = input.nextInt();
return one/two;
}catch(ArithmeticException e){
System.out.println("除数不能为0!");
return 0;
}finally{
System.out.println("=====运算结束=====");
return -10000;
}
}
public static void main(String[] args) {
// TryDemoTwo t = new TryDemoTwo();
int result = test();
System.out.println(result);
}
}
输出:
=====运算开始=====
请输入第一个整数:45
请输入第二个整数:5
=====运算结束=====
-10000
=====运算开始=====
请输入第一个整数:10
请输入第二个整数:0
除数不能为0!
=====运算结束=====
-10000
从结果来看,无论输入是否正确,都不会执行相应的(try或catch)return语句,而执行的是finally的return语句。
删除finally的return语句输出为:
=====运算开始=====
请输入第一个整数:12
请输入第二个整数:2
=====运算结束=====
6
=====运算开始=====
请输入第一个整数:25
请输入第二个整数:0
除数不能为0!
=====运算结束=====
0
结论:首先一个方法的返回结果只能有一个是必然的,不是try或catch里的return语句不执行,而是finally中的return强制执行了。