一,代码中的异常

  1. /**
  2. * 计算果商供应量
  3. */
  4. import java.util.Scanner;
  5. public class Test {
  6. public static void main(String[] args) {
  7. Scanner input = new Scanner(System.in);
  8. System.out.print("请输入果实采摘量(公斤):");
  9. int weight = input.nextInt();
  10. System.out.print("请输入果商数(家):");
  11. int num = input.nextInt();
  12. System.out.println("每家果商供应" + weight / num + "公斤水果。");
  13. System.out.println("欢迎再来,预祝生意兴隆!");
  14. }
  15. }

接受的果商数值直接影响代码的运行结果

  • 正整数:程序正常运行
  • 零:程序出现异常

image.png

非数字:程序出现异常
image.png

因为疏漏造成程序运行出现异常,应该怎么解决?是否可以让程序自动判断异常和处理异常呢?

  1. package JavaOOP06;
  2. import java.util.Scanner;
  3. /**
  4. * 计算每家果商供应量(使用if-else处理异常)
  5. */
  6. public class Test2 {
  7. public static void main(String[] args) {
  8. Scanner input = new Scanner(System.in);
  9. System.out.print("请输入果实采摘量(公斤):");
  10. int weight = 0;
  11. if (input.hasNextInt()) {
  12. weight = input.nextInt();
  13. } else {
  14. System.err.println("果实采摘量必须是整数!");
  15. System.exit(1);
  16. }
  17. System.out.print("请输入果商数(家):");
  18. int num = 0;
  19. if (input.hasNextInt()) {
  20. num = input.nextInt();
  21. if (num <= 0) {
  22. System.err.println("果商数必须大于零!");
  23. System.exit(1);
  24. }
  25. } else {
  26. System.err.println("果商数必须输入整数!");
  27. System.exit(1);
  28. }
  29. System.out.println("每家果商供应" + weight / num + "公斤水果。");
  30. System.out.println("欢迎再来,预祝生意兴隆!");
  31. }
  32. }

使用if else的缺陷

  1. 无法穷举所有的异常情况
  2. 影响程序可读性,维护难度高

解决方案:使用异常处理机制

二、什么是异常

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序