小结:

  1. 如果没有出现异常,则执行try块中所有语句,不执行catch中所有的语句,如果有finaily,最后还需要执行finally里面的语句。
  2. 如果出现异常,则try块中异常发生后,try块剩下的语句不再执行。将执行catch块中的语句,如果有finally,最后还需要执行finally里面的语句! ```java package test;

public class Main { public static int method() { try { String[] names = new String[3];//String[]数组 if (names[1].equals(“tom”)) {//NullPointerException System.out.println(names[1]); } else { names[3] = “WTY2002”; } return 1; } catch (ArrayIndexOutOfBoundsException e) { return 2; } catch (NullPointerException e) {//捕获 return 3; } finally { //必须执行 return 4; //返回4 } }

  1. public static void main(String[] args) {
  2. System.out.println(method()); //4
  3. }

}

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/21705001/1639019462959-4d2744d1-0652-4e99-a15f-8a1887b3b913.png#clientId=u779ef558-72f4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=166&id=u6bedc7e4&margin=%5Bobject%20Object%5D&name=image.png&originHeight=142&originWidth=645&originalType=binary&ratio=1&rotation=0&showTitle=false&size=44269&status=done&style=none&taskId=u0b68a01e-ff9f-4d3c-9a1f-fc08d807aae&title=&width=754)
  2. ```java
  3. package test;
  4. public class Main {
  5. }
  6. class Exception {
  7. public static int method() {
  8. int i = 1;
  9. try {
  10. i++; //i = 2
  11. String[] names = new String[3];
  12. if (names[1].equals("tom")) {//空指针
  13. System.out.println(names[1]);
  14. } else {
  15. names[3] = "WTY2002";
  16. }
  17. return 1;
  18. } catch (ArrayIndexOutOfBoundsException e) {
  19. return 2;
  20. } catch (NullPointerException e) {
  21. System.out.println("========");
  22. return ++i; //i = 3
  23. } finally {//必须执行
  24. return ++i; //i = 4
  25. }
  26. }
  27. public static void main(String[] args) {
  28. System.out.println(method());
  29. }
  30. }

image.png

  1. package test;
  2. public class Main {
  3. }
  4. class ExceptionExe01 {
  5. public static int method() {
  6. int i = 1;//i = 1
  7. try {
  8. i++;// i=2
  9. String[] names = new String[3];
  10. if (names[1].equals("tom")) { //空指针
  11. System.out.println(names[1]);
  12. } else {
  13. names[3] = "hspedu";
  14. }
  15. return 1;
  16. } catch (ArrayIndexOutOfBoundsException e) {
  17. return 2;
  18. } catch (NullPointerException e) {
  19. return ++i; // i = 3 => 保存临时变量 temp = 3;
  20. } finally {
  21. ++i; //i = 4
  22. System.out.println("i=" + i);// i = 4
  23. }
  24. }
  25. public static void main(String[] args) {
  26. System.out.println(method());// 3
  27. }
  28. }

image.png

  1. package test;
  2. import java.util.Scanner;
  3. public class Main {
  4. public static void main(String[] args) {
  5. //如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止
  6. //思路
  7. //1. 创建Scanner对象
  8. //2. 使用无限循环,去接收一个输入
  9. //3. 然后将该输入的值,转成一个int
  10. //4. 如果在转换时,抛出异常,说明输入的内容不是一个可以转成int的内容
  11. //5. 如果没有抛出异常,则break 该循环
  12. Scanner scanner = new Scanner(System.in);
  13. int num = 0;
  14. String inputStr = "";
  15. while (true) {
  16. System.out.println("请输入一个整数:"); //
  17. inputStr = scanner.next();
  18. try {
  19. num = Integer.parseInt(inputStr); //这里是可能抛出异常
  20. break;
  21. } catch (NumberFormatException e) {
  22. System.out.println("你输入的不是一个整数:");
  23. }
  24. }
  25. System.out.println("你输入的值是 = " + num);
  26. }
  27. }

image.png