异常概念
一、概念
1、异常:有异于常态,和正常情况不一样,有错误出现,阻止当前方法或作用域。
2、异常处理:将出现的异常提示给编程人员与用户,使原本将要中断的程序继续运行或者退出。并且能够保存数据和释放资源。
二、异常体系结构
1、所有异常都继承于Throwable类,其下有两大子类:
(1)Error类:错误,一般编程人员不太接触,如虚拟机错误、线程死锁。硬伤:使程序崩溃
(2)Exception类:异常,编码、环境、用户输入等问题,其子类主要有:
A:非检查异常(运行时异常RuntimeException):【由java虚拟机自动捕获】如空指针NullPointer、越界ArrayIndexOutofBounds、错误类型转换ClassCast、算数异常Arithmetic等。
B:检查异常CheckException:【需要手动添加捕获和处理语句】文件异常IO等。
异常处理
1、使用try-catch以及try-catch-finally语句块,来捕获或处理异常。
ry{
//一些可能会出现异常的代码
}catch(Exception子类 e){
//捕获异常,处理该异常的代码块
}catch(Exception e){
//处理该异常的代码块
e.printStackTrace();//打印堆栈信息
}finally{
//最终将要执行的一些代码
}
**抛出异常
一、throws概念
1、是写在方法名和方法的参数表之后,在方法体之前,用它修饰的方法向调用者表明该方法可能会抛出某种类型的异常。
2、可以抛出一种或多种类型异常,每个类型的异常之间用逗号隔开。如果多个异常中有子夫异常关系可只抛父类
3、具体的方法体中可以调用一些会抛出异常的方法或者新抛出一个异常。
4、throw写在方法体内。
5、如果某个方法调用了抛出异常的方法,那么必须添加try catch语句去尝试捕获这种异常,或者添加声明,将异常抛出给更上一层的调用者进行处理。
6、可以自定义异常,基于Exception类或其子类。
二、Java中的异常抛出
1、 throw:将产生的异常抛出(动作),抛出一个异常对象。
2、throws:声明将要抛出何种类型的异常(异常类)
注意:其调用该方法者,需要对其进行异常处理,除非它再声明一个抛出异常。