异常 一、概述
异常是指程序出现了不正常的状况,Throwable分为Error和Exception,Exception又分为RuntimeException和非RuntimeException。
Error:严重问题,不需要处理
Exception:异常类,它表示程序本身可以处理的问题
RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码
非RuntimeException:编译期必须处理否则编译不通过
二、JVM的默认处理方案- 把异常的名称,原因和位置等信息输出在控制台
- 程序停止执行
出现异常是,我们有两种方式可以处理异常,try……catch……和throws。
try……catch……:
格式:try{
可能会出现异常的代码;
}catch(异常类名 变量名){
异常处理代码;
}
执行流程:程序从try里面的代码执行,出现异常,会自动生成一个异常类对象,该异常类对象将被提交到Java运行时系统,当Java运行时系统接收到异常时,会到catch中去找匹配的异常类,找到后进行异常处理,执行完毕后,程序还可以继续执行下去。
四、ThrowableThrowable的成员方法
1)public String getMessage():返回此throwable的详细消息字符串3
2)public String toString():返回此t可抛出的简短描述
3)public void printStackTrace():把异常的错误信息输出在控制台
五、编译时异常和运行时异常的区别Java中异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常,所有的RuntimeException类及其子类被称为运行时异常,其他的都是编译时异常。
- 编译时异常:必须显示处理,否则出错,编译不通过
- 运行时异常:无需显示处理,也可以和编译时异常一样处理
不是所有的情况下我们都有权限去处理异常,对于我们无法处理的异常情况,我们可以使用throws。
格式:throws 异常类名;
注意:这个格式是跟在方法的括号后面。
编译时异常必须处理,若用throws处理,将来谁调用谁处理
运行时异常可以不处理,出现问题后需要我们重新修改代码
七、自定义异常格式:
public class 异常名 extends Exception{
无参构造;
带参构造;
}
范例:
public class ScoreException extends Exception{
public ScoreException(){}
public ScoreException(String message){
super(message);
}
}
throw和throws的区别:
throws:用在方法声明后,跟的是异常类名;表示抛出异常,由该方法的调用者来处理;表示出现异常的一种可能性,并不一定会发生这些异常。
throw:用在方法体内,跟的是异常对象名;表示抛出异常,由方法体内的语句处理;执行throw一定是出现了异常。



