head first java ( 第 11 章 )

- 执行别人的方法时, 要注意是否存在风险

  image

  image

  image

  image

- java 异常处理依赖你已经知道所调用方法是有风险的

  java API 说明文件中会显示该方法是否有异常, 如果有, 那么你就要处理异常。

  try {

  } catch() {

  }

  注意: 如果 try 里的程序有多段代码可能出现异常, 那么 catch 所抓住的异常一定是先出现问题的一样.

- 抛出与抓到异常 

  ( 方法本身的定义, 可见方法本身只要抛出就可以了 )

 image

  ( 调用该方法, 它要 catch 异常 )

  image

- try/catch 块的流程

  如果遇到异常时, 从抛出异常的代码直接到 catch 里运行, 然后继续下去

  finally: 无论如何都要执行

  try {

  } catch() {

  } finally {

  }

  finally块是用来存放不管有没有异常都的执行的程序

  image

  如果没有 finally, 你的同时把 turnOverOff()摆在 try与 catch两处. finally块可以让你把所有重要的清理程序代码集中在一处.

- 处理多重异常

  image

  抛出了 2 个异常

  image 

  多个 catch

- 异常是多态的

  image  

  image

  可以用 super 来处理所有异常并不代表就应该这么做

  try {

  } catch( Exception ex ) {

    // 恢复什么? 这会捕获所有的异常, 因此你会搞不清楚哪里的错

  }

  为每个需要单独处理的异常编写不同的catch块

  image

- 有多个 catch块时要从小排到达( 这是肯定的, 反之, 如果从大到小, 那么第一个catch会将所有的异常catch住) 

  如果第一个是最大的, 剩下的就不会被用到了.

- 处理异常的方法

  1. 处理 ( try {} catch () {} )

  2. 声明 ( 就是推给后来人做 )

     void foo() throws ClothingException { // 声明会抛出异常, 但是没有try-catch, 所以谁调用该方法, 谁就要处理异常

       laundry.doLaundry();

     }

- 规则

catch与finally不能没有try

try 一定要有catch或finally ( 只带有finally的try必须声明异常)

   void go() throws FooException (

     try {

       x.doStuff();

     } finally {}

   }

try 与 catch 之间不能有程序

原文地址:https://www.cnblogs.com/moveofgod/p/3021450.html