异常
1.1 异常概述
异常体系
throwable 分为 error 和Exception Exception又分为 RuntimeException和 非RuntimeException
error是严重问题,不处理
Exception : 异常类,表示程序本身可以处理的问题
RuntimeException: 编译期不检查,出问题后需要我们回来修改代码
非RuntimeException: 编译器就要进行处理,否则程序不能通过编译
1.2 JVM的默认处理方案
如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理
1.把异常的名称,异常原因以及异常出现的位置等信息输出在控制台
2.程序停止执行
1.3 异常处理
如果程序出现了异常,我们要自己来处理,又两种方案:
1,try...catch...
2, throws
1.4 try…catch…处理
格式:
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常处理的代码;
}
执行流程:
程序从try里的代码开始执行
出现异常时会自动生成一个异常类对象,该对象会被提交给JVM
接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理
执行完毕,程序继续往下执行。
1.5 Throwable 的成员方法
public String getMessage() 返回此throwable的详细消息字符串
public String toString() 返回可抛出的简短描述
public void printStackTrace() 把异常的错误信息输出在控制台
一般使用 printStackTrace() 信息比较全面
1.6 编译时异常和运行时异常的区别
Java中的异常分为两大类
编译时异常: 受检异常 必须处理,否则程序就会发生错误,无法通过编译
运行时异常: 非受检异常 无需处理,也可以和编译异常一样处理
所有的RuntimeException类及其子类,被称为运行时异常,其他的都是编译时异常
1.7 throws 处理
虽然能通过try...catch...对异常进行处理,但不是所有情况我们都有权限进行异常的处理
针对这种情况,Java提供了throws的处理方案
格式: throws 异常类名; 直接跟在方法的括号后面
编译时异常必须要进行处理 try...catch...或throws 采用throws方案的话,谁调用谁来处理
运行时异常可以不进行处理 出现问题后需要修改代码。
1.8 自定义异常
格式:
public class 异常类名 extends Exception{
无参构造
带参构造
}
范例:
public class myException extends Exception{
public myException(){}
public myException(){
super(message);
}
}
1.9 throws 和 throw 的区别
throws throw
用在方法声明后面,后跟异常类名 用在方法体内,后跟异常对象名
表示抛出异常,又该方法的调用者来处理 表示抛出异常,由方法体内的语句处理
表示出现异常的可能,不一定会出现 执行throw就是抛出了一个异常