异常
- 异常:异常就是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一定抛出了某种异常.