异常是指 java 程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很
相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个
对象来表示,Java 使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别
封装到一个对象来表示的,该对象中包含有异常的信息。
Java 对异常进行了分类,不同类型的异常分别用不同的 Java 类表示,所有异常的根类为
java.lang.Throwable,Throwable 下面又派生了两个子类:Error 和 Exception,Error 表示
应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,说内存溢出和线
程死锁等系统问题。Exception 表示程序还能够克服和恢复的问题,其中又分为系统异常和
普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的
问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或
者让软件死掉,例如,数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常
(NullPointerException)、类转换异常(ClassCastException);普通异常是运行环境的变
化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这
样的异常后,程序不应该死掉。
java 为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须 try ..catch 处
理或用 throws 声明继续抛给上层调用方法处理,所以普通异常也称为 checked 异常,而系
统异常可以处理也可以不处理,所以,编译器不强制用 try..catch 处理或用 throws 声明,所
以系统异常也称为 unchecked 异常。
提示答题者:就按照三个级别去思考:虚拟机必须宕机的错误,程序可以死掉也可以不死掉
的错误,程序不应该死掉的错误 |