1、什么是异常

1.1 定义

image.png

1.2 分类

image.png

1.3 异常体系结构

image.png

1.4 Error

image.png

1.5 Exception

image.png

2、Java异常处理机制

image.png

2.1 处理异常

  1. package com.exception;
  2. public class Demo01 {
  3. public static void main(String[] args) {
  4. int a = 10;
  5. int b = 0;
  6. Demo01 demo01 = new Demo01();
  7. demo01.test(a,b);
  8. // 捕获多个异常,从小到大
  9. try{
  10. System.out.println(a/b);
  11. }catch (ArithmeticException e){
  12. e.printStackTrace();
  13. }catch (Error e) {
  14. System.out.println("Error: " + e);
  15. }catch (Exception e){
  16. e.printStackTrace();// 打印错误的栈信息
  17. System.out.println("exception: " + e);
  18. }catch (Throwable t){
  19. System.out.println("Throwable: " + t);
  20. }finally {
  21. System.out.println("finaly");
  22. }
  23. }
  24. public int test(int a, int b) throws ArithmeticException{// 假设方法上处理不了,方法上处理异常
  25. if (b == 0){
  26. throw new ArithmeticException();// 主动抛出异常,一般在方法中使用
  27. }
  28. return a/b;
  29. }
  30. }

3、自定义异常

image.png

  1. // MyException
  2. package com.exception;
  3. public class MyException extends Throwable {
  4. // 传递数字 > 10
  5. private int detail;
  6. public MyException(int a){
  7. this.detail = a;
  8. }
  9. // 异常打印
  10. @Override
  11. public String toString(){
  12. return "MyException{" + detail + "}";
  13. }
  14. }
  15. // Demo01
  16. package com.exception;
  17. public class Demo01 {
  18. public static void main(String[] args) {
  19. int a = 0;
  20. int b = 0;
  21. Demo01 demo01 = new Demo01();
  22. try {
  23. demo01.test(a);
  24. } catch (MyException e) {
  25. e.printStackTrace();
  26. }
  27. // 捕获多个异常,从小到大
  28. }
  29. public void test(int a) throws MyException {// 假设方法上处理不了,方法上处理异常
  30. if (a == 0){
  31. throw new MyException(a);// 主动抛出异常,一般在方法中使用
  32. }
  33. System.out.println("ok");
  34. }
  35. }

4、总结

image.png