Java异常是Java提供的用于处理程序中错误的一种机制
1.所谓错误是指在程序运行的过程中发生的一些异常事件。如除0溢出、数组下标越界、所需要读取的文件不存在
2.设计良好的程序应该在异常发生时提供处理这些错误,使得程序不会因为异常的发生而阻断或者产生不可预见的结果
3.Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并经被提交给Java运行时系统,这个过程称为抛出异常throw
4.当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这个过程称为捕获异常。
Java异常处理的关键字有throws、throw、try、catch、finally共5个关键字
Java语言提供了异常处理机制,为方法的异常终止和出错处理提供了清楚的接口
1.用来在发生运行异常时告诉程序如何控制自身的运行,以防止错误的进一步恶化
2.每个方法必须对他可能抛出的异常进行预先声明,在定义方法时,必须声明这个方法可能会抛出哪一种或几种异常
Java针对可能出现的问题提供了一组异常类,顶级父类为Throwable
getMessage toString printStackTrace
异常的分类:
1、Error及其子类:错误,一般指的是虚拟机的错误,是由Java虚拟机生成并抛出,程序不能进行处理所以也不加处理,例如OutOfMemoryError内存溢出、调用栈溢出StackOverFlowError
2、RuntimeException及其子类:运行时异常(非受检型异常),是由于编程bug所导致,希望越早发现越好,所以不进行处理,直接中断报错即可,编程人员针对报错信息修改程序bug来解决问题
3.Exception及其子类中除了RuntimeException及其子类之外的其它异常:受检型异常(非运行时异常),这类异常属于明知道可能出现,但是没有办法杜绝的异常。这类异常一般采用try/catch或者throws声明抛出的方式进行异常处理,当程序出现了非正常情况,尽量保证程序正常结果,而不是立即中断
受检型异常:明知道存在这种异常的可能,但是没有办法杜绝,所以必须进行编码异常处理必须进行编码处理,否则编译失败。处理方法有2个try/catch结果或者throws声明抛出
非受检型异常:这种异常不需要进行处理,发现的越早越好可以编码处理,也可以不用处理
Throwable类是Java异常类型的顶层父类,一个对象只有是Throwable类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别
5种常见的运行时异常类型,用于检查应试者平常的编码量
1.ArithmeticException数学异常,/ by zero是异常的说明信息。
int k=0;
System.out.println(10/k);
解决方案:在执行除法计算之前,进行分母是否为0的判断
2.ArrayIndexOutOfBoundsException数组下标越界,数组下标的取值范围为[0,length-1]
int[] arr=new int[5];
System.out.println(arr[5]);
解决方案:通过下标访问数组元素时,首先对