黑马程序员技术交流社区

标题: 异常 [打印本页]

作者: 胡刚涛    时间: 2012-8-10 10:09
标题: 异常
对异常中的两个关键字throws和throw的区别除了:throws使用在函数上,throw使用在函数内。
还有什么重要的区别吗 ?救助!!!


作者: 张扬123    时间: 2012-8-10 10:18
throws和throw的区别:
    throws使用在函数上。                                                  throw使用在函数内。
    throws后面跟的是异常类,可以跟多个,用逗号隔开。        throw后面跟的是异常对象。
作者: 朱志辉    时间: 2012-8-10 10:21
本帖最后由 朱志辉 于 2012-8-10 10:23 编辑

throw是在函数体内抛出一个异常。
throws是在函数声明中抛出异常,异常可能有多个。而且类似于extends、implements,后面都有就“s”的,这么一想就很容易明白而不会混了。但是Java只能单继承!
作者: 李志广    时间: 2012-8-10 10:27
本帖最后由 李志广 于 2012-8-10 10:29 编辑

这是在毕老师视频中的一些总结,两者的区别和联系:
(1)、throws是用来声明一个方法可能抛出的所有异常信息,throw则是指抛出的一个具体的异常类型。
(2)、通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
(3)、throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
(4)、throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛。

希望对你有所帮助!!!{:soso_e100:}

作者: 戎石锁    时间: 2012-8-10 10:27
1.throws 用于抛出方法层次的异常, 并且直接由些方法调用异常处理类来处理该异常, 所以它常用在方法的后面。比如
public static void main(String[] args) throws SQLException

2.throw 用于方法块里面的代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常, 但它不会处理它, 而是由方法块的throws Exception来调用异常处理类来处理。

throw用在程序中,明确表示这里抛出一个异常。   
throws用在方法声明的地方,表示这个方法可能会抛出某异常。

throw是抛出一个具体的异常类,产生一个异常。
throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。

作者: 李敬    时间: 2012-8-10 10:31
throws是用来声明一个方法可能抛出的所有异常信息
throw则是抛出的一个具体的异常类型
两者区别
1,正如你说,一个在函数上,一个在函数内部.
2,对异常处理方式不同,throws对异常不处理,谁调用谁处理,throws的Exception的取值范围要大于方法内部异常的最大范围,而cathch的范围又要大于throws的Exception的范围,throw主动抛出自定义异常类对象.
3,throws抛出的是类,throw抛出的是对象.
作者: 张忠豹    时间: 2012-8-10 10:34
楼上的回答很正确,我在面试的时候也遇见过这样的问题,我也是按照楼上的这么回答,结果人家摇了摇头。我问他,我答错了吗,他说没有。他说我想要的结果是这样的:“throws是被动抛出异常,而throw是主动抛出异常”。比如,一个person类有age属性,如果int age =0(没有问题),然后重新赋值的时候要判断一下if(age<0){throw new Exception()}else{……}如果不这么写的话,一个人的age为负值是没有意义的(这就是主动抛出异常),如果直接写……部分的内容,jvm是不会报错的,程序能够正常运行。(throw是人为的抛出异常,throws是被动抛出异常)
作者: 胡刚涛    时间: 2012-8-10 22:14
问题已经解决!!!




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