一,代码中的异常
/**
* 计算果商供应量
*/
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入果实采摘量(公斤):");
int weight = input.nextInt();
System.out.print("请输入果商数(家):");
int num = input.nextInt();
System.out.println("每家果商供应" + weight / num + "公斤水果。");
System.out.println("欢迎再来,预祝生意兴隆!");
}
}
接受的果商数值直接影响代码的运行结果
- 正整数:程序正常运行
- 零:程序出现异常
非数字:程序出现异常
因为疏漏造成程序运行出现异常,应该怎么解决?是否可以让程序自动判断异常和处理异常呢?
package JavaOOP06;
import java.util.Scanner;
/**
* 计算每家果商供应量(使用if-else处理异常)
*/
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入果实采摘量(公斤):");
int weight = 0;
if (input.hasNextInt()) {
weight = input.nextInt();
} else {
System.err.println("果实采摘量必须是整数!");
System.exit(1);
}
System.out.print("请输入果商数(家):");
int num = 0;
if (input.hasNextInt()) {
num = input.nextInt();
if (num <= 0) {
System.err.println("果商数必须大于零!");
System.exit(1);
}
} else {
System.err.println("果商数必须输入整数!");
System.exit(1);
}
System.out.println("每家果商供应" + weight / num + "公斤水果。");
System.out.println("欢迎再来,预祝生意兴隆!");
}
}
使用if else的缺陷
- 无法穷举所有的异常情况
- 影响程序可读性,维护难度高
解决方案:使用异常处理机制
二、什么是异常
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序