首页 > 试题广场 >

下列有关JAVA异常处理的叙述中正确的是()

[不定项选择题]

下列有关JAVA异常处理的叙述中正确的是()

  • finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
  • throws是用来声明一个成员方法可能抛出的各种非运行异常情况
  • final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
  • throw是用来明确地抛出一个异常情况
推荐
throws用于在方法上声明该方法不需要处理的异常类型,用在方法上后面跟异常类名 可以是多个异常类
 throw用于抛出具体异常类的对象,用在方法内 后面跟异常对象只能是一个异常类型实体.
 try块必须和catch块或和finally同在,不能单独存在,二者必须出现一个. 
finally块总会执行,不论是否有错误出现.但是若try语句块或会执行的catch语句块使用了JVM系统退出语句,finally块就不会被执行了. 一般我们把关闭资源的代码放在finally里面 保证资源总是能关闭

然后再看这一题 A肯定对了,C根本就跟异常处理没有关系,所以不选。就算有关系也错了

final用于声明属性、方法、类。分别表示属性不可更改、方法不能被覆盖、类不能被继承。

所以C选项说方法不能被继承错误,是不能覆盖

B、D咬文嚼字说是因为

B. throws是用来声明一个成员方法可能抛出的各种异常情况.

“情况”错了应该改成对象

我表示不能接受,D也一样。如果没有更好的理由

我觉得题目答案错了,就是ABD
以上仅代表个人观点,如果错了欢迎讨论,勿喷。
编辑于 2017-03-19 22:31:08 回复(13)
答案:A

1.throws 用于抛出方法层次的异常, 
并且直接由些方法调用异常处理类来处理该异常, 
所以它常用在方法的后面。比如 
public static void main(String[] args) throws SQLException

2.throw 用于方法块里面的 代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常, 

但它不会处理它,
finall修饰变量表示不可更改的常量,修饰方法表示不可被重写的方法
发表于 2016-12-06 20:51:48 回复(0)
(1)throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常
(2)当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理
(3)throws出现在方法函数头;而throw出现在函数体.throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

(4)如果子类覆盖超类中的一个方法,子类方法中声明的受检查异常不能比超类方法中声明的异常更通用;
(5)如果超类方法中没有抛出任何受检查异常则子类也不能抛出任何受检查异常。一旦方法中抛出了异常,这个方法就不能返回给调用者,不必为返回默认值和错误代码担忧。  

(1)如果try快中抛出了一个在catch子句中说明的异常类,那么程序将跳过try语句的其余代码,执行catch子句中的处理器代码。
(2)如果方法中的任何代码抛出了一个在catch子句中都有声明的异常类型,那么方***立即退出。
(3)无论是否抛出异常finally语句块最终都会执行。

(1)当try块中包含return语句时,在执行return语句前会先执行finally块,如果finally块中也有return语句,这个return语句的返回值会将try块中return语句的返回值覆盖掉。
(2)如果try块中抛出异常,finally中也抛出相同类型异常,那么原始异常将会丢失,转而抛出finally中的异常
发表于 2019-11-25 12:41:48 回复(0)
咬文嚼字
发表于 2019-06-13 00:59:58 回复(0)
final用于修饰属性、方法、类。属性不能更改、方法不能被覆盖、类不能被继承
发表于 2019-02-12 22:46:44 回复(0)
这两题有一道是错的?这道题的a选项和原题的C选项
编辑于 2017-08-14 19:28:48 回复(2)
这题怎么过几天就变一次答案?
发表于 2017-07-11 11:13:50 回复(1)

ABC

A.finally无论发生什么都会执行,本选项的发生什么“异常”有点奇怪

B.√

C.√

D.应该是throws

发表于 2017-04-03 16:39:51 回复(0)
final 方法不能被重写
发表于 2017-03-28 09:00:33 回复(0)
A:明显正确,不懂的可以去看看网上博客
B:throws是用来声明一个成员方法可能抛出的各种异常情况,错误!因为很多运行时异常,不会显示的抛出(当然你愿意的话,也可以,只不过你的代码会乱成翔)
C:final用于可以声明属性和方法,分别表示属性的不可变及方法的不可覆盖。不是方法的不可继承
D:throw是用来明确地抛出一个异常情况。错误,throw不仅仅可以抛出异常,还可以抛出Error以及Throwable.
感觉正确可以点赞,谢谢大家~
编辑于 2017-03-28 21:41:11 回复(20)
throws不是抛出一个错误交给上级来处理吗》throw new 则是这块代码可能出现问题,BD不应该是错的吗
发表于 2018-04-08 17:25:24 回复(0)
这题我他妈昨天写abd错了,告诉我选a,今天在做一遍,选a错了,告诉我选ABC,***
发表于 2017-03-20 08:51:01 回复(10)
选AD
这个B有问题,可以抛出运行时异常的。
发表于 2018-07-12 10:40:50 回复(7)
final用于声明类时,表示类的不可继承。
不能有方法的继承一说,看到说方法继承的直接错。
发表于 2018-06-22 09:56:24 回复(0)

throws不止非运行时异常吧?

发表于 2018-08-11 10:11:10 回复(0)
final用于类 ---- 说明该类无法被继承,实例:String类
final用于方法-----说明该方法无法被覆盖,实例:final不能与abstract关键字同时使用
final用于变量-----说明属性不可变(可用于静态和非静态属性),但多和staic连用,表示常量
编辑于 2018-08-11 09:27:17 回复(0)
在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中抛出了异常且未处理。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)CPU出现异常被关闭。
发表于 2018-02-28 19:53:13 回复(1)
B  throws是用来声明一个成员方法可能抛出的各种非运行异常情况
一般来说我们不需要抛出运行时异常,因为我们如果发现运行时异常,就会修改代码改正它,而不是将其抛出。(如数组角标越界,我们不会抛出这种运行时异常,而是尝试改正)。如果我们没有发现运行时异常,用户在使用的时候发现,我们也要对其进行改正。
因此用于方法的throws一般不会抛出运行时异常。
发表于 2020-04-14 03:16:02 回复(0)
B的描述有问题,应该是:各种异常情况,而不是:非异常情况!
发表于 2018-04-04 08:58:40 回复(2)
final用于声明属性、方法、类。分别表示属性不可更改、方法不能被覆盖、类不能被继承。
发表于 2017-06-20 21:42:33 回复(0)
throw不能抛出非运行时异常,因为非运行时异常需要处理
发表于 2020-02-09 16:15:55 回复(0)