日期:2014-05-20  浏览次数:20729 次

异常里的throw和throws有啥不同?
throws是在方法后面用,后面可以跟多个异常类

throw是在方法内里用,后面一次只能跟一个异常类

但是都是抛,感觉没什么区别啊

比如

public void play()throws Exception{   //这个也是抛给别人
//省略代码
}

public void play()throws Exception{   //这个也是抛给别人
throw new Exception
}


我感觉throw有的功能,throws都有了,那为什么要创造2个功能一样的东西出来?有一个抛的就行,整俩一样的抛作甚?

再说了,你如果不想抛,可以自己处理,用try-catch就搞定。懒得处理,就用throws抛出去就行了。

那还要throw有什么用?

有人说throw new Exception("我可以自定义信息啊")可以自定义信息,

那在try-catch里的catch处理块里 你完全可以System.out.println("我这里也可以自定义信息啊");
这不效果也一样嘛。

还有人说我可以加if判断语句,判断输入年龄是不是没超过100岁,然后配合throw使用,
那我完全可以if判断语句判断年龄,如果年龄不符合,就System.out.println("你输入的年龄不符")
这样if和try-catch也可以啊,而且效果和用throw new Exception("你输入的年龄不符")是一样的。


所以异常我感觉就2,要不你处理,要不你抛!但是现在整2个抛,throw和throws,不太明白都是抛有什么不同?

既然throws能抛一个,或者多个,那还要throw只能抛一个的不就没意义了吗?






------解决方案--------------------
区别:
throws是用来声明一个方法可能抛出的所有异常信息,而throw则是指抛出的一个具体的异常类型。此外throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。

简单的区别
throws:将异常声明但是不处理
throw:就是自己进行异常处理