一、Error异常 java虚拟机无法解决的严重问题. 一般不编写针对性的代码节能型处理

    二、Exception异常
    二十、异常 - 图1
    三、常见异常 — 运行时异常

    1. /**
    2. * 空指针
    3. * NullPointerException
    4. */
    5. @Test
    6. public void getNullException(){
    7. int [] arr = null;
    8. System.out.println(arr[0]);
    9. }
    10. /** 数组下标越界
    11. * ArrayIndexOutOfBoundsException
    12. */
    13. @Test
    14. public void getIndexOfBoundsException() {
    15. int[] arr = new int[]{1, 5, 3, 5};
    16. System.out.println(arr[4]);
    17. }
    18. /**
    19. * 数值转换异常
    20. * NumberFormatException
    21. */
    22. @Test
    23. public void getNumberFormatException(){
    24. String a = "a";
    25. int b = Integer.parseInt(a);
    26. }

    四、异常的处理方式:try—catch—finally

    1. try结构包裹可能存在异常的代码
    2. try结构中出现异常后 与catch结构中的异常类型进行匹配 匹配成功后 进入处理
    3. catch结构可以同时存在多个
    4. catchi结构中的异常类型存在父子关系时 必须子类在前方 反之随意
    5. 使用try—catch—finally处理编译时异常, 编译通过后 运行时仍有可能会出现
    6. finally 可选的 一定会被执行的 即使前方存在return
    7. throws 向上抛出异常
    8. throws处理异常时 子类重写父类方法时 向上抛出时 异常类型不大于父类的异常类型(否则可能发生类转换异常)
    9. 如果父类被重写的方法中没有throws 则子类只能使用try—catch处理异常

      1. @Test
      2. public void getNumberFormatException(){
      3. // try 包裹可能出现异常的代码
      4. try {
      5. String a = "a";
      6. int b = Integer.parseInt(a);
      7. // catch 捕获出现对应类型的异常 随后进入catch结构
      8. } catch (NumberFormatException e) {
      9. // 输出错误信息 e.getMessage()
      10. System.out.println(e.getMessage());
      11. // 打印栈追踪错误信息
      12. e.printStackTrace();
      13. // 可以存在多个catch结构
      14. } catch (NullPointerException e) {
      15. // 异常类型之间存在父子关系时,一定要子类异常在前方 反之随意
      16. } catch (Exception e) {
      17. }
      18. }

      五、throw 手动抛出异常