今天学习了异常,在我学习C++时也接触过异常,我印象最深的是throw和try..catch两个处理异常的方法。在今天所学习的内容中也有相似的内容。
异常:程序出现不正常的情况,例如报错、无法编译...
Throwable包括Error、Exception,Exception包括RuntimeException和非RuntimeException两大类。
Error:严重问题,不需处理。Exception:异常类,程序本身可处理的问题。 RuntimeException:编译期不检查,出现问题,修改代码。非RuntimeException:编译期必须处理,否则不能运行。
JVM默认处理方案
1、把异常的名称、异常原因及异常出现的位置输出在控制台;
2、程序停止执行。
异常处理
1、try...catch
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常处理代码
}
2、throws 由于我们并没有全部的权限去全部处理
throws 异常类名 注:在方法的括号后面
运行时异常:把异常抛出
编译时异常:采用throws,谁调用谁处理。
Throwable成员方法
public String getMessage() | 返回异常的原因 |
public String toString() | 返回可抛出的原因 |
public void printStackTrace() | 在控制台输出异常信息 |
三个方法,public void printStackTrace()对于异常的信息最详细,使用最多。
所有RuntimeException及其子类称为运行时异常,其他为编译时异常。
编译时异常(受检异常):必须显示处理,否则程序会错误,无法编译。
运行时异常(非受检异常):无需显示处理,可和编译时异常一样处理。
自定义异常,自己定义的异常,给出提示信息。
public class 异常类名 extends Exception{无参构造;带参构造}
throws | throw |
方法声明之后,跟的是异常类名 | 方法体内,跟的是异常对象名 |
抛出异常,由方法调者这处理 | 抛出异常,方法体内语句处理 |
异常可能发生 | 异常一定发生 |
明天将会学习集合。