任务描述
本关任务:接收给定的两个整数(第一个为被除数,第二个为除数),求这两个数的商,当除数为 0 时,不捕获但要避免抛出运行时异常 ArithmeticException。
相关知识
常见运行时异常
在之前的学习中,我们了解到异常可分为运行时异常(RuntimeException)和非运行时异常,常见运行时异常有:
- ArithmeticException(算术运算异常):当除数为 0 时就会抛出该异常;
- IndexOutOfBoundsException(数组越界异常):当数组只有三个元素,却要访问第四个元素时,就会抛出此异常;
- NullPointerException(空指针异常):当对象未初始化或为空,却要访问对象时,就会抛出此异常。
运行时异常的特征
运行时异常,通常不需要我们自己进行 try-catch 或者 throw 处理,交由虚拟机处理即可,而非运行时异常是必须要处理的。 我们可以看到,即使除数为 0,以下代码在 IDE 也是不会报错的:
只有点击运行的时候,程序才会报以下错误:
/*
任务:接收给定的两个整数(第一个为被除数,第二个为除数),实现以下需求:
1.求这两个数的商;
2.当除数为 0 时,不捕获但要避免抛出运行时异常 ArithmeticException。
程序执行示例:
输入:5 3
输出:1
输入:4 0
输出:除数不能为0
*/
import java.util.Scanner;
public class ExcTest {
public static void main(String[] args) {
// 请在Begin-End间编写代码
/********** Begin **********/
// 第一步:接收给定的两个整数
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
// 第二步:当除数为0时,避免抛出运行时异常
try{
int x = a / b;
}catch (ArithmeticException e){
System.out.println("除数不能为0");
}
// 第三步:输出两个数的商
if (b != 0){
System.out.println(a / b);
}
/********** End **********/
}
}