今天笔试,遇到了一道题,问哪些exception是checkedException。不知道什么是checkedException,就蒙了两个(选择题),晚上回来,查了一下,发现网上讲的都好复杂,于是就翻书《JAVA完全探索》,里面讲的挺简单(不知是翻译自哪里,感觉语言上有的地方不是很通):
JAVa的Exception分为两种,CheckedException与UncheckedException。
CheckedException典型的有:
AWTException, ClassNotFoundException,FileNotFoundException,IOException,ParseException(这个是对字符串进行分析转换时出现的),SQLException
它是这样一种异常:当调用产生该异常的方法时,总得处理或在方法的throws语句中声明。这种异常表示了可能出现在相当正确的程序中。即使你的代码毫无错误,你的程序也可能无法执行某种I/O操作、加载所需的类文件或者在运行时执行其他一些类似的工作。由于这些错误不是能控制的,所以JAVA编译器要求提供一旦发生时处理他们的方法。
UncheckedException是RuntimeException的子类,典型的有:
ArithmeticException(数学错误,比如除数为0),ArrayIndexOutOfBoundsException,ArrayStoreException,NullPointerException,NullPointerException,NumberFormatException,NumberFormatException(字符串与数字之间进行转换),SecurityException,StringIndexOutOtBoundsException
这些异常不会出现在正确的程序中。基于此理由,不要求在方法的throws语句中处理或者声明一个未检查过的异常。
所有的异常都是Exception的子类,而Exception又是Throwable的子类。Throwable的三个有用的方法:getMessage(), toString(),printStackTree()