JVM 默认是如何处理异常的呢?
main函数收到一个问题,有两种处理方式
1.自己解决
2.自己解决不了,交给JVM解决
jvm有一个默认的异常处理机制,就是将该异常显示出来
包括 异常名称、信息、出现位置
异常的两种处理方式:
1. try ... catch .. finally 捕获并处理
try ...catch
try ... catch ..finally
格式:
try{
需要被检测的代码(就是可能出现异常的代码)
}catch(异常类型 变量名){
处理异常的代码
}finally{
一定会执行的语句
}
2. throws抛出
格式:
访问权限修饰符 返回值类型 方法名(参数列表) throws 异常1,异常2 ... 异常n{
}
区别:
try ... catch 自己处理 程序可以继续运行
throws 谁调用我 谁处理我 程序会被终止 不会继续运行
Throwable中常见的方法
String getMessage() 返回此Throwable的详细描述
String toString() 返回此Throwable的简短描述
void printStackTrace() 将Throwable堆栈追踪信息打印 jvm默认调用此方法显示信息
try ... catch 方式处理异常的特殊情况 --> 多异常情况
1.catch异常时,建议catch更具体的异常,这样处理起来可以更有针对性
2.try后面可以跟多个catch 小的异常放前面 大的异常放后面
在 jdk1.7之后 ,可以一个catch处理多个异常 中间用 | 分隔
finally 的特点
被finally控制的语句体,一定会被执行
finally 的作用
用于释放资源 IO流 和数据库连接会用