异常:就是程序出现了不正常的情况。程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
注意:语法错误不算在异常体系中。
JVM的默认处理方案
如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理。
把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
程序停止执行
异常处理方式
异常处理方式———throws
格式:throws 异常类名;
注意:这个格式是写在方法的定义处,表示声明一个异常。
编译时异常因为在编译时就会检查,所以必须要写在方法后面进行显示声明
运行时异常因为在运行时才会发生,所以在方法后面可以不写
异常处理方式
throws 和throw的区别
throws 用在方法声明后面,跟的是异常类名
表示声明异常,调用该方法有可能会出现这样的异常
throw 用在方法体内,跟的是异常对象名
表示手动抛出异常对象,由方法体内的语句处理
异常处理方式———try...catch...
格式:
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码;
}
好处:可以让程序继续往下执行。
1.如果try中没有遇到问题,怎么执行?---会把try中所有的代码全部执行完毕,不会执行catch里面的代码。
2.如果try中遇到了问题,那么try下面的代码还会执行吗?
那么直接跳转到对应的catch语句中,try下面的代码就不会再执行了
当catch里面的语句全部执行完毕,表示整个体系全部执行完全,
进行执行下面的代码。
3.如果出现的问题没有被捕获,那么程序任何运行?
那么try...catch就相当于没有写,那么也就是自己没有处理。
默认交给虚拟机处理。
4.同时有可能出现多个异常怎么处理?
出现多个异常,那么就写多个catch就可以了,
注意点:如果多个异常之间存在子父类关系,那么父类一定要写在下面
Throwable的成员方法
方法名 | 说明 |
public String getMessage() | 返回此throwable的详细消息字符串 |
public String toString() | 返回此抛出的简短描述 |
public void printStackTrace() | 把异常的错误信息输出在控制台 |
两种处理异常方式的小结
抛出 throw throw
1.在方法中,当传递的参数有误,没有继续运行下去的意义了,则采取抛出处理。表示让该方法结束运行。
2.告诉调用者出现了问题。
捕获try...catch