美文网首页
Java学习笔记--异常处理

Java学习笔记--异常处理

作者: Allens_Lee | 来源:发表于2019-10-30 15:36 被阅读0次

    1、异常简介

    异常的父类:Throwable。
    Throwable有两个子类:Error和Exception。
    
    • 在发生虚拟机错误或是线程死锁时会报Error错误,一旦发生Error错了,那么整个程序就代表整个程序崩溃了。

    • Exception异常有多种,比如非检查异常、检查异常。

      1. 非检查异常(RuntimeException)
        a. 空指针异常:NullPointException
        b. 数组下标越界异常:ArrarIndexOutOfBoundsException
        c. 类型转换异常:ClassCastException
        d. 算术异常:ArithmeticException
      2. 检查异常
        a. 文件异常:IOException
        b. SQL异常:SQLException

    2、使用

    • 格式
      try {
          //一些会抛出异常的方法
      } catch(Exception e) {
          //处理该异常的代码块
      } catch(Exception2 e) {
          //处理Exception2的代码块
      } ... (n个catch块) ... {
      
      } finally {
          //最终将要执行的一些代码
      }
      

    注意:

    1. try 语句块不可以独立存在,必须与 catch 或者 finally 块同存
    2. 多重catch语句中,异常类型必须子类在前父类在后

    3、异常的抛出

    • thorw -- 将产生的异常抛出(动作)

    • throws -- 声明将要抛出何种类型的异常(声明)

      public void 方法名(参数列表) throws 异常列表 {
          //调用会抛出异常的方法或者:
          throw new Exception();
      }
      

      注意:调用会抛出异常的方法时,必须使用try-catch处理,或者在方法中添加throws声明,将异常抛到更上一层的调用者去处理。

    4、自定义异常

    • 格式:

      class 自定义异常类 extends 异常类型 {
      
      }
      
    • 使用实例:

      public class DrunkException extends Exception {
      
          public DrunkException() {
      
          }
      
          public DrunkException (String message) {
              super(message);
              System.out.println(message);
          }
      }
      

    5、异常链

    使用实例:

    void test2() throws DrunkException {
        throw new DrunkException("出错啦");
    }
    
    void test3() throws RuntimeException {
        try {
            test2();
        } catch (DrunkException e) {
            //转换异常类型方法一:
            //RuntimeException exception = new RuntimeException("运行时出错啦");
            //exception.initCause(e);
            //转换异常类型方法二:
            RuntimeException exception = new RuntimeException(e);
            throw exception;
        }
    }
    

    通过转换异常类型,可以清楚的知道异常的链路。

    6、实际应用中的经验与总结

    1. 处理运行时异常时,曹勇逻辑去合理规避同时辅助try-catch处理。
    2. 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常。
    3. 对于不确定的代码,也可以加载try-catch,处理潜在的异常。
    4. 尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出。
    5. 具体如何处理异常,要根据不同的业务需求和异常类型去决定。
    6. 尽量添加finally语句块去释放占用的资源。

    相关文章

      网友评论

          本文标题:Java学习笔记--异常处理

          本文链接:https://www.haomeiwen.com/subject/fknovctx.html