首页 > 试题广场 >

下面有关JAVA异常类的描述,说法错误的是?

[单选题]
下面有关JAVA异常类的描述,说法错误的是?
  • 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception
  • 非RuntimeException一般是外部错误(非Error),其一般被 try{}catch语句块所捕获
  • Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉
  • RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获
运行时异常故名思议就是程序在运行的时候出现异常,隐含的一个前提就是程序在编译时是检测不到异常的存在,作者本人也并不知道是否自己的代码中含有运行时异常,所以根本也不可能提前使用try{}catch{}捕获.
发表于 2016-03-20 00:39:46 回复(14)
原来如此
发表于 2022-07-06 00:21:39 回复(0)
RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针、算术异常。但是不是必须要被try{}catch{}捕获
发表于 2016-03-10 11:17:58 回复(0)
B 中throws语句不是也可以吗?
发表于 2015-08-19 14:02:36 回复(1)
发表于 2015-09-21 15:03:17 回复(21)
异常是指程序运行时(非编译)所发生的非正常情况或错误,当程序违反了语音规则,jvm就会将出现的错误表示一个异常抛出。
异常也是java 的对象,定义了基类 java。lang。throwable作为异常父类。 这些异常类又包括error和exception。两大类
error类异常主要是运行时逻辑错误导致,一个正确程序中是不应该出现error的。当出现error一般jvm会终止。
exception表示可恢复异常,包括检查异常和运行时异常。 检查异常是最常见异常比如 io异常sql异常,都发生在编译阶段。这类通过try、catch捕捉
而运行时异常,编译器没有强制对其进行捕捉和处理。一般都会把异常向上抛出,直到遇到处理代码位置,若没有处理块就会抛到最上层,多线程用thread。run()抛出,单线程用main()抛出。常见的运行异常包括 空指针异常 类型转换异常 数组月结异常 数组存储异常 缓冲区溢出异常 算术异常等,
发表于 2016-03-22 09:32:24 回复(9)

注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

通常,Java的异常(包括Exception和Error)分为 可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)
可查异常(编译器要求必须处置的异常): 正确的程序在运行中,很容易出现的、情理可容的异常状况 可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常 状况,就必须采取某种方式进行处理。

除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。

不可查异常(编译器不要求强制处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。

Exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。

运行时异常: 都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。

非运行时异常 (编译异常): 是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常


编辑于 2019-01-15 22:13:46 回复(7)
粉红色的是受检查的异常(checked exceptions),其必须被try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为 CHeckedException 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守。
绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除... 而声明为Error的,则属于严重错误,需要根据业务信息进行特殊处理,Error不需要捕捉。 比如:AWTError、ThreadDeath、
编辑于 2017-04-09 14:11:41 回复(11)
BD都错了吧。抛出的异常不一定非要捕获,可以一直往上抛,直到JVM。
发表于 2017-08-23 17:37:46 回复(4)
RuntimeException为运行时异常,不需要捕获,也可以通过编译,非运行异常必须捕获,否则不能通过编译
发表于 2015-07-20 16:38:22 回复(0)
上次同样的题  B也是错的  
其必须被 try{}catch语句块所捕获 错 

也可以被抛出  不一定try{}catch语句块所捕获
发表于 2018-06-21 15:12:40 回复(2)
理解反了,正解应该是运行时异常不需要捕捉或者抛出,检查时异常必须捕捉和抛出
发表于 2017-04-15 17:53:49 回复(0)
运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除...
而声明为Error的,则属于严重错误,需要根据业务信息进行特殊处理,Error不需要捕捉。

runtime exceptions都说是运行时异常,try catch 是不用捕捉的,因为是运行时才有可能捕捉到。就像数组越界,你用trycatch 捕捉了吗
发表于 2015-11-28 21:39:38 回复(6)
D.runTimeException不需要捕获
发表于 2015-08-10 17:38:10 回复(0)
7c头像 7c
错误的类型转换,不属于RuntimenExeception,属于CheckedExeception
发表于 2015-07-27 21:59:38 回复(1)
运行时的异常按照字面的意义上来解释就是说运行的时候发生的异常,在编译的时候是检测不到异常的存在的,所以在写代码的时候不知道异常出现在哪里,所以不能提前使用try...catch...来捕获
发表于 2018-10-27 19:44:34 回复(0)
RuntimeException是运行异常,即运行时才会可能抛出的异常。所以不需要用户提前处理,也就不用使用try-catch语句块。 
发表于 2018-07-19 15:54:21 回复(0)
    Java语言规范将派生于Error类或RuntimeException类的所有异常称为未检查(unchecked)异常,所有其他的异常称为已检查(checked)异常。
    checked异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常,对于这种异常,java编译器强制要求我们对出现的这些异常进行catch,所以面对这种异常我们只能写一堆try/catch语句去处理。
发表于 2017-04-11 12:58:15 回复(0)
选D,RuntimeException是包含上述异常,但并不是必须被捕获的,有些异常的触发并不能被提前知晓
发表于 2021-07-15 19:48:45 回复(0)
RuntimeException是运行异常 并不能被try{}catch 语句块所捕获
发表于 2018-01-05 20:34:13 回复(0)