理解Java异常机制的精髓

我觉得我抓到了精髓,所以来说一下
 
JAVA中的异常机制
  1. 从机制上由【抛出异常】和【捕捉异常】组成的
    1. 【抛出异常】分为【能creat异常的】和【不能creat异常的】(只能转发异常)
    2. 【捕捉异常】自带【异常处理】,异常处理又分【最终处理】和【非最终处理】,所以【捕捉异常】分为【带能最终处理的异常处理的】【带不能最终处理的异常处理的】(其实就是【不能creat异常的抛出异常】)
  2. 从形式上又分为四种:
    1. 运行BUG系统抛出异常。最经典的抛出异常方式
    2. throw。形式是“先自己new异常对象 ,然后throw 异常对象”,在代码的任何地方都可以抛出
    3. try...catch...finally。最经典的捕捉异常方式
    4. throws。它的功能是向上层转发异常,它加在某个方法后,当这个方法被调用时,方法中可能产生异常,并把这个异常从方法中转发出来到调用这个方法的方法中
  3. 两个维度的联系是
    1. 运行BUG系统抛出异常【能creat异常的】【抛出异常】
    2. throw【能creat异常的】【抛出异常】
    3. try...catch...finally【带能最终处理的异常处理的】【捕捉异常】
    4. throws。它的功能是向上层转发异常,所以它表演两个角色:
      1. 捕捉:【带不能最终处理的异常处理的】【捕捉异常】
      2. 抛出:【不能creat异常的】【抛出异常】
  4. 所以经常的应用形式是:
    1. 最开始用《try...catch...finally》或《throws》这两种能【捕捉异常】的东西包裹住【能creat异常的】【抛出异常】的《运行BUG系统抛出异常》或《throw》
    2. 然后其中
      1. 用《try...catch...finally》包裹住的《运行BUG系统抛出异常》或《throw》因为是【带能最终处理的异常处理的】【捕捉异常】,所以异常就能被处理了,异常处理到此结束
      2. 用《throws》包裹住的《运行BUG系统抛出异常》或《throw》因为是【带不能最终处理的异常处理的】【捕捉异常】,异常不能被最终处理,异常还会被再次抛出,所以异常处理到此没有结束,它成为了抛出源,还需要被《try...catch...finally》或《throws》再次包裹
        1. 于是类似上上层的第一步,不过是用《try...catch...finally》或《throws》这两种能【捕捉异常】的东西包裹住【不能creat异常的】【抛出异常】的《throws》
        2. 然后其中还是
          1. 用《try...catch...finally》包裹住的《throws》,异常能被处理,异常处理到此结束
          2. 用《throws》包裹住的《throws》,异常不能被最终处理,异常还会被再次抛出,所以异常处理到此没有结束,它成为了抛出源,还需要被《try...catch...finally》或《throws》再次包裹
            1. 于是回到上上层的第一步,后边完全一样,继续循环

你可能感兴趣的:(理解Java异常机制的精髓)