引言:
异常不是错误,请你别误会,反而我们可以说错误是一种异常。
概述:
异常:程序运行过程中可能出现的非正常状态。
内容:
一 Java异常分类
(1)Java不同类型的异常分别用不同的Java类表示。所有异常的根类为java.lang.Throwable,Throwable派生俩个子类Error和Exception。Error表示程序无法克服和回复的严重问题;Exception表示程序可以克服和恢复问题,分为系统异常和普通异常。系统异常指因软件开发人员考虑不周所导致软件本身缺陷问题,软件使用者无法克服或者恢复这种问题,这种问题下软件或者继续运行或者卡死。例如我们电脑的软件因为特殊原因强制退出,或者卡死状态。普通异常是运行环境改变或异常所导致的问题,例如网络异常、空间不够等。
(2)解决方案:对于普通异常,java编译器强制普通异常必须try...catch处理或用throws声明继续抛给上层调用方法处理,也称之为checked异常;然而系统异常可以处理也可以不处理,编译器不强制用try...catch处理或throws声明,固称之为unchecked异常。
二 Java异常处理原理及其机制
(1)原理:一个方法在执行过程中抛出异常,JVM必须找到能捕获该异常的catch代码块,首先先检查本方法是否存在这样的catch代码块,如果存在,则执行该处理异常代码块;若不存在,JVM会从调用栈中弹出该方法的栈结构,继续到前一个方法中查找合适的catch代码块,在不断回溯查找过程中,若在某一个方法中找到了能处理该异常的代码块,则该方法的栈结构将成为栈顶元素,程序流程将转到该方法的异常处理代码部分继续执行,但是如果JVM追溯到调用栈的底部方法时,仍然没有找到处理该异常的代码块,就会调用异常对象的printStackTrace()方法,打印出异常信息,接着如果该线程不是主线程,终止该线程,其他线程继续正常执行,反之,整个程序被终止。
(2)机制:try...catch、finally、throw、throws。
三 常见的异常类
(1)IOException:操作输入流和输出流可能出现的异常;
(2)ArithmeticException:数学异常。如果把整数除以0,就会出现这种异常。
(3)NullPointerException:空指针异常。当引用变量为null时试图访问对象的属性或方法,就会出现这种异常。
(4)IndexOutBoundsException:下标越界异常。它的子类ArrayIndexOutOfBoundsException表示数组下标越界异常。
(5)ClassCastException:类型转换异常。
(6)IllegalArgumentException:非法参数异常。可用来检查方法的参数时候合法。
四 推荐网址
更加详细的知识,大家请点击后面的链接:点击此链接。
总结:
Java的异常处理机制很强大,不过也不能每个方法都用,开发人员可以凭借经验以及实践,在适当的方法里面加入适当的异常处理,增强我们软件的健壮性。