黑马程序员技术交流社区

标题: 关于抛异常throw与throws区别 [打印本页]

作者: t_mac    时间: 2011-12-7 19:18
标题: 关于抛异常throw与throws区别
本帖最后由 t_mac 于 2011-12-7 23:25 编辑

throws与throw 都可以抛异常 一个是方法声明的时候抛,一个是方法里面抛,这两个有什么区别吗?
作者: 小春同学    时间: 2011-12-7 19:51
一、throws用来声明方法可能抛出的所有异常信息,抛出的是异常类,提示这个方法可能会有异常,谁调用调用这个方法谁就要做好心理准备;
二、throw则在方法内部抛出一个具体的异常类对象或自定义异常类实例,发生了该异常由用户自己处理,
作者: fly51888    时间: 2011-12-7 20:19
区别一:

throw是语句抛出一个异常;throws是方法抛出一个异常;
throw语法:throw <异常对象>
在方法声明中,添加throws子句表示该方法将抛出异常。
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。
区别二:
throws可以单独使用,但throw不能;
区别三:
throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单
独使用,然后再由处理异常的方法捕获。
作者: 段波    时间: 2011-12-7 20:45
throws写在定义一个方法名的后面,表示若该方法出现异常时将异常抛给调用它的类,而本方法不进行处理;
throw写在具体的方法中,用来抛出异常进而可以被try...catch()语句捕获,也就是在本方法中对异常进行处理。
作者: 武超    时间: 2011-12-7 21:41
throws是抛出异常类,是写在方法后面,如:throws TestException
而throw是抛出异常对象或实例,放在方法体内 如:throw new Test()
作者: 许邦存    时间: 2011-12-7 23:23
1.throws 用于抛出方法层次的异常,并且直接由些方法调用异常处理类来处理该异常,所以它常用在方法的后面。比如public static void main(String[] args)  throws  Exception
2.throw 用于方法块里面的代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常,但它不会处理它,而是由方法块的throws Exception来调用异常处理类来处理。
作者: t_mac    时间: 2011-12-9 15:43
谢谢大家的回答,我把大家对throws 和throws 的理解 综合一下:
1.throws 是在方法定义的时候声明的;而throw是写在方法里面;
2.throws用来声明方法可能抛出的所有异常信息,抛出的是异常类,提示这个方法可能会有异常,谁调用调用这个方法谁就要做好心理准备;
而在方法内部抛出一个具体的异常类对象或自定义异常类实例,发生了该异常由用户自己处理;
3.我们调用方法时,如果该方法抛(throws)异常了,我们要么继续抛,要么try{}catch(){};而我们在设计一个方法时,如果觉得某个条件不满足
就程序就没有必要运行下去了,此时可以用throw 抛出一个异常对象,该异常对象还可以作为方法的返回值;








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