A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 妖目 中级黑马   /  2015-5-16 21:49  /  600 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(1) 异常:就是程序出现的不正常情况。

       (2)异常体系:
           Throwable
                 |--Error 严重的问题,是处理不了的。要改正代码的。
                 |--Exception
非RuntimeException 的,是需要处理的。编译期异常。
                      |--RuntimeException 不需要处理的,是需要改代码的。运行期异常。
            举例:
                 Error:
                       地震,海啸。
                 Exception:
                       感冒了,头疼。
            注意:
                  每种体系的子类都是以父亲的名称作为后缀。
                 XxxError
                 XxxException

      (3)java 虚拟机的默认处理方式
            把异常的类名,原因,位置等信息显示在控制台。
            一旦有异常发生,其后的代码不能继续执行。

      (4) 异常的解决方案:
           A: 自己处理
                  基本格式:
                       try{
                             可能发生异常的代码 ;
                      }catch( 异常类名 变量名){
                             异常的处理代码 ;
                      }finally{
                             释放资源的代码 ;
                      }
                  注意:一旦有一次发生,就会立马执行 catch里面的代码。

                  变形格式:
                      try...catch
                      try...catch...catch
                      try...catch...catch...finally
                      try...finally
           4. 多个异常的处理方式
                      A: 针对每一个异常都进行 try...catch
                      B: 针对所有异常 写一个try 多个 catch。
                  注意:
                       一定要捕捉到所有的异常。
                       一旦捕捉到异常了, try下面的语句将不再执行,程序将跳转到 catch。

           5. 多个catch的顺序问题
                       如果异常同级,没有顺序。
                       如果异常存在父子关系,父类一定要放在子类的后面。
                  原则:如果你明确知道是什么异常,就一定要捕捉具体的异常,不建议使用父类。

                 JDK7 针对多个 catch进行了优化:
                      catch( 异常1 | 异常 2 | 异常3 ... 变量){}

                       注意:这些异常必须是平级关系。
                            和try...catch...catch的不同点是
                            JDK7 的这种方案是必须平级关系,不能有子父关系。
                             而try...catch...catch父亲放最后是可以的。
           B: 抛出处理
                  用throws关键字在方法上声明 (抛出) 。

           C: 到底使用谁 ?
                 a: 能自己处理的尽量自己处理。 (建议用try...catch)
                 b: 实在不行,你先抛了在说。上就业班我们对异常是进行统一处理的。

                  看到问题,点击鼠标。
           7.Throwable 的三个方法
                      getMessage() -- 获取异常的消息字符串
                      toString() -- 全路径异常的类名:消息字符串
                      printStackTrace() -- 把异常的详细信息打印到控制台
      
           8 、加入finally 语句
                      try {
                            // 可能产生异常的代码(尽可能的定位到异常出现的位置)
                      } catch ( 异常类名 变量名) { // Exception
                            // 异常处理语句
                            // 以后,返回错误页面等等。暂时显示异常。
                      } finally {
                            // 释放资源
                      }
      
           finally 有和没有的区别:
                       假设,如果有必需要执行的程序,放在 finally中就一定会执行。
                       但是如果不放在 finally中,假设这个时候出现的异常是没有被捕获到的,那么程序就会死掉,                从而导致必须要执行的代码没有被执行到!

           9. 总结异常处理两种方式:
      
                       抛出异常 -- 在方法上声明异常 : throws 异常类名
      
                 try...catch 处理
      
                       如果知道怎么处理,一般建议处理。不知道了,抛。
                     
           10. 自定义异常
                       自定义一个类,继承 Exception 或者 RuntimeException 。提供带参( String)构造。
                  工作中一般都继承自 RuntimeException
      
                  在可能出现这个异常的代码处,做异常处理时,抛出此异常。 -- 关键字 throw

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马