异常

  • 异常:异常就是Java程序在运行过程中出现的错误。
  • 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描述后的对象体现。 我们见过的异常,角标越界异常,空指针异常
  • 异常的分类 
    • 编译时异常 
      • 除了RuntimeException及其子类,Exception中所有的子类都是,这种异常必须要处理,要不编译通不过 
    • 运行是异常 
      • RuntimeException及其子类都是,这种异常不用处理,编译会通过,不过这样的程序会有安全隐患,遇到这种异常是需要改代码的 
    • 严重错误问题 
      • 用Error进行描述,这个问题发生后,一般不编写针对代码进行处理,而是要对程序进行修正.通常都是由虚拟机抛出的问题 
  • 异常分三类: 
  • 骑车去旅行: 
    • Error:走到半路上,发生山路塌陷,或者出现了泥石流,这个问题很严重,不是(张三)能够立马解决的。 
    • Exception:出门前,(张三)要看看车*以及车链子等是否还在 
    • RuntimeException:在骑车的过程中,有好路不走,偏偏要走石子路
  • jdk1.7来抓异常的方式
    try { 
        //jdk 1.7 出现了一个新特性 
        URL url = new URL(“www.baudu.com”); 
        FileOutputStream fos = new FileOutputStream(“abc.txt”); 
    } catch (FileNotFoundException | MalformedURLException e) { 
        e.printStackTrace(); 
    }
  • throw和throws区别 
    • throws要跟在方法的后面 throw用在方法里 
    • throw后面只能跟一个具体的异常, throws可以抛出多个异常, 多个异常用逗号分隔 
    • throws抛出的异常有可能发生也有可能不发生,throw异常一定发生 
  • try是检测异常,catch是用来捕获异常的,finally是用来结束资源的.被finally控制的语句体一定会执行. 
  • 特殊情况:在执行到finally之前jvm退出了(比如System.exit(0)) 
  • 定义功能方法时,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识。 
  • 在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。 
  • 在Java 7中,catch代码块得到了升级,用在单个catch块中处理多个异常。如果你要捕获多个异常并且它们包含相似的代码,使用这一特性将会减少代码重复度 
  • throws 和 throw 
    • throws用在方法声明后 
    • 可以跟多个异常名,用逗号隔开 
    • 表示抛出异常,由该方法的调用者来处理 
    • throws表示出现异常的可能性,并不一定会发生异常 
    • throw: 
    • 用在方法体内,跟的也是异常对象名 
    • 只能抛出一个异常对象名 
    • 表示 抛出异常,由方法体内的语句处理. 
    • throw是抛出了异常,执行了throw一定抛出了某种异常.

 

异常