A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© t_mac 黑马帝   /  2011-12-7 19:18  /  2790 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 t_mac 于 2011-12-7 23:25 编辑

throws与throw 都可以抛异常 一个是方法声明的时候抛,一个是方法里面抛,这两个有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
admin + 1 问题已解决,建议把你所理解的给大家再分享.

查看全部评分

6 个回复

倒序浏览
一、throws用来声明方法可能抛出的所有异常信息,抛出的是异常类,提示这个方法可能会有异常,谁调用调用这个方法谁就要做好心理准备;
二、throw则在方法内部抛出一个具体的异常类对象或自定义异常类实例,发生了该异常由用户自己处理,

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
区别一:

throw是语句抛出一个异常;throws是方法抛出一个异常;
throw语法:throw <异常对象>
在方法声明中,添加throws子句表示该方法将抛出异常。
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。
区别二:
throws可以单独使用,但throw不能;
区别三:
throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单
独使用,然后再由处理异常的方法捕获。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
throws写在定义一个方法名的后面,表示若该方法出现异常时将异常抛给调用它的类,而本方法不进行处理;
throw写在具体的方法中,用来抛出异常进而可以被try...catch()语句捕获,也就是在本方法中对异常进行处理。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
throws是抛出异常类,是写在方法后面,如:throws TestException
而throw是抛出异常对象或实例,放在方法体内 如:throw new Test()

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
1.throws 用于抛出方法层次的异常,并且直接由些方法调用异常处理类来处理该异常,所以它常用在方法的后面。比如public static void main(String[] args)  throws  Exception
2.throw 用于方法块里面的代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常,但它不会处理它,而是由方法块的throws Exception来调用异常处理类来处理。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
t_mac 黑马帝 2011-12-9 15:43:35
7#
谢谢大家的回答,我把大家对throws 和throws 的理解 综合一下:
1.throws 是在方法定义的时候声明的;而throw是写在方法里面;
2.throws用来声明方法可能抛出的所有异常信息,抛出的是异常类,提示这个方法可能会有异常,谁调用调用这个方法谁就要做好心理准备;
而在方法内部抛出一个具体的异常类对象或自定义异常类实例,发生了该异常由用户自己处理;
3.我们调用方法时,如果该方法抛(throws)异常了,我们要么继续抛,要么try{}catch(){};而我们在设计一个方法时,如果觉得某个条件不满足
就程序就没有必要运行下去了,此时可以用throw 抛出一个异常对象,该异常对象还可以作为方法的返回值;



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马