- 异常
概述:程序出现不正常情况,在执行过程中,出现异常,导致jvm的非正常停止;
注意:语法错误不在异常体系内;
编译时异常和运行时异常;
简单来说:编译时异常就是在编译时出现的异常;运行时异常就是在运行时出现的异常;
2、虚拟机默认处理异常的方式
把异常名称,异常原因,及异常出现的位置等信息输出在控制台;
程序停止执行;
3、异常处理方式
(1)throws声明异常
格式:throws 异常类名;
注意:写在方法定义处,表示声明异常;
编译时异常因为在编译时就检查,必须要写在方法后进行显示声明;
运行时异常因为运行时才会发生,在方法后面可以不写;
1)throw抛出异常对象
2)Throws和throw区别
throws | throw |
用在方法声明后面,跟的是异常类名 | 用在方法体内,跟的是异常对象名 |
声明异常,调用该方法有可能出现异常 | 手动抛出异常对象,方法体内的语句处理 |
3)抛出处理异常的意义
在方法中,当传递参数有误,没有继续运行下去的意义,抛出,该方法结束;
告诉调用者方法出现问题;
(2)try…catch(可以让程序继续运行)
1)格式:try{可能出现异常的代码;}catch(异常类名 变量名){异常的处理代码;}
2)如果try中没有遇到问题,会把try中所有代码全部执行完成;
如果try中遇到问题,try下面的问题不执行;直接调转到catch里面执行,catch执行完毕,继续执行下面的语句;
如果出现问题没有被捕获,try..catch 相当于没有写,默认交给虚拟机;
同时多个异常;写多个catch就可以;如果多个异常之间出现子父类关系,父类一定要卸载下面;
3、throwable成员方法
方法名 | 说明 |
public String getMessage() | 返回throwable的详细信息字符串 |
public String toString() | 返回此刻抛出的简短描述 |
public void printStackTrace() | 把异常的错误信息输出在控制台 |
4、自定义异常
步骤:定义异常类;写继承关系;空参构造,带参构造;