1.Throwable类是java语言中所有错误或异常的超类,它有两个子类:
-
Error(严重问题)我们不处理,这种问题一般都是很重要的,比如内存溢出
-
Exception (问题)
2.异常可分为(Exception):
- 编译异常:不是RuntimeException的异常 必须进行处理,因为你不处理,编译就不能通过。
- 运行异常: RuntimeException这种问题我们也不处理,因为是自己的问题,而且这个问题出现肯定是代码不够严谨,需要修正代码。
3.出现运行异常,默认交给JVM处理:
- 把异常的名称,原因及出现的问题等信息输出在控制台上。
- 同时会中断程序,不会执行后续的代码。
4.处理异常的方式:
- try…catch…finally
- throws
- throw
5.方式1(变形格式):try…catch
- 注意:
try里面的代码越少越好
catch里面必须有内容,哪怕给一句简答的提示(如果没有内容,相当隐藏了异常) - 好处:异常处理后的代码开源继续执行,没有中断。
6.处理多个异常
- 方式1:
每一个写一个try…catch - 方式2:
写一个try,多个catch
try{
问题1;
问题2;
…
}catch(异常类名 变量){
针对问题发处理
}catch(异常类名 变量){
针对问题发处理
}…
注意:
一旦try里面除了问题,就会在这里把问题给抛出去,然后和catch里面的问题进行匹配
一旦有匹配的,就执行catch里面的处理,然后结束了try…catch
继续执行后面的语句
7.JDK7的新特性
try{
}catch(异常1 | 异常2 | … 变量名){
处理
}
注意:
1.处理方式是一致的。(实际开发中,好多时候可能就是针对同类型的问题,给出同一个处理)
2.多个异常间必须是平级关系。
8.编译时异常和运行时异常的区别:
- 编译时异常:java程序必须显示处理,否则程序就会发生错误,无法通过编译。
- 运行时异常:无需显示处理,也可以和编译时异常一样处理。
9.方式2:throws
- 定义功能方法时,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识
- 格式:throws 异常类名
- 注意:这格式必须跟在方法的括号后面
10.方式3:throw
- 在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。
- 和throws配合使用(如果没有throws声明异常,则由方法体内的语句处理,反之通过throws声明异常,将方法体内异常抛给调用者处理)
11.throws和throw的区别
- throws:
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定发生这些异常 - throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常