黑马程序员技术交流社区

标题: 以下关于java异常说法不正确的是 [打印本页]

作者: shijialong1111    时间: 2016-7-4 16:30
标题: 以下关于java异常说法不正确的是
8.        以下关于java异常说法不正确的是(  )。
A. Throwable 类是 Java 语言中Error类和Exception类的父类。
B. 当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过try…catch…finally处理。
C. jdk6(包括jdk6)之前,如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有存在的异常对象的父类。

作者: 回根的落叶    时间: 2016-7-4 17:36
标题: RE: 以下关于java异常说法不正确的是
答案:选C


答案解析:
A选项明显正确,属于java基础知识。
B选项同样属于java基础知识。选项解析:1) java.lang.Error: Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。
java.lang.Exception: Throwable的子类,用于指示一种合理的程序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。
2)  Error和RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).
checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。检查了的异常发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。
unchecked exceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。 因此,面对Errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。
RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。
处理RuntimeException的原则是:如果出现 RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。其他(IOException等等)checked异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。
C选项错误。选项解析:在java7(jdk1.7)之前。每个catch语句只能捕获一种类型的异常;从java7开始,一个catch语句才可以捕获多种类型的异常。
而且在捕获多种异常时需要注意两点:①捕获多种异常时,多种异常之间需要用竖线(|)隔开;②捕获多种异常时,异常变量有隐式的final修饰,因此程序不能对异常变量重新赋值。




作者: Ake丶    时间: 2016-7-4 20:06
回根的落叶 发表于 2016-7-4 17:36
答案:选C

正解。···




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2