1.异常体系

(1)运行时异常(RuntimeException):又叫非受检异常,写代码时不会报错,编译时不检查,有问题回来改代码。
(2)编译时异常(非RuntimeException):又叫受检异常,编译时显示处理,否则不能通过编译。
【tips】:Throwable类是所有错误和异常的超类。Throwable类的成员方法:
    ①getMessage:返回异常原因。
    ②toString:返回异常原因和异常类名。
    ③printStackTrace:将异常详细信息(名称、原因、位置)输出到控制台。
2.异常处理方案
(1)JVM的默认处理方案:
    1)把Exception的名称、原因、出现的位置输出到控制台;
    2)程序停止运行
(2)try...catch...处理异常
    1)格式:
try{
    可能出现异常的代码;
}catch(异常类名 E){
    异常处理代码;
}
    2)流程:
先执行try里面的代码,如果出现异常,会自动生成一个异常类对象e,e将被提交给Java运行时系统,该系统接收到e后回到catch中找匹配的异常类E,找到后进行异常处理代码,执行完异常处理代码完后程序还可以继续运行
【注意】:try...catch...处理完异常后程序会继续运行下去!
(3)throws处理异常
    1)格式:
...方法名() throws 异常类名;
    2)注意事项:
无论是运行时异常还是编译时异常,都可以用throws处理异常,但是这只是把异常抛出,告诉调用者这里可能有异常,并没有处理异常,最终还得谁调用谁用try...catch...处理。
3.自定义异常类
(1)格式:
public class ScoreException extends Exception {  //无参构造
    public ScoreException() {
    } 
    //带参构造 public ScoreException(String message) {//message一般为异常原因  super(message); }
}
(2)throw关键字:用来在方法体内部抛出异常对象