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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李振元 黑马帝   /  2011-12-9 23:58  /  2200 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李振元 于 2011-12-10 15:41 编辑

知道throw与throws
throws Exception{
throw new Exception("Error");
}
但不理解两者都是抛出异常,签名为什么不一样?
有没有深层次的原理性上得区别?

评分

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

查看全部评分

5 个回复

倒序浏览
本帖最后由 常登凯 于 2011-12-10 04:48 编辑

throw关键字用在是在程序代码中表示程序执行到这里就会抛出一个新的异常,也就是在你想要抛出异常的地方用这个关键字来告诉编译器这里抛出了一个什么样的异常;
而throws关键字是用在方法声明上的,表示这个方法在运行的过程中可能会抛出一些什么样的异常,但是我的方法内部没有做出处理,而是直接抛出来了,那么调用这个类的类就必须对这些异常做出相应的捕获处理;

评分

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

查看全部评分

回复 使用道具 举报
throws使用在函数上。
throw使用在函数内。
throws后面跟的是异常类。可以跟多个,用逗号隔开。
throw后跟的是异常对象。
回复 使用道具 举报
李明 黑马帝 2011-12-10 13:44:34
板凳
我来补充一下:如果函数内有throw 抛出异常对象的话,如果未进行try处理,则必须在函数上进行声明。RuntimeException除外。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 知道的童鞋,都来补充一下 问题就解决了!.

查看全部评分

回复 使用道具 举报
t_mac 黑马帝 2011-12-10 14:20:53
报纸
对此我也曾有过疑惑,后来在大家的帮助下,我弄懂了,并做了一个小结:

1.throws 是在方法定义的时候声明的;而throw是写在方法里面;
2.throws用来声明方法可能抛出的所有异常信息,抛出的是异常类,提示这个方法可能会有异常,谁调用调用这个方法谁就要做好心理准备;
而在方法内部抛出一个具体的异常类对象或自定义异常类实例,发生了该异常由用户自己处理;
3.我们调用方法时,如果该方法抛(throws)异常了,我们要么继续抛,要么try{}catch(){};而我们在设计一个方法时,如果觉得某个条件不满足
就程序就没有必要运行下去了,此时可以用throw 抛出一个异常对象,该异常对象还可以作为方法的返回值;

更多详情 见我的个人空间中主题帖

评分

参与人数 1技术分 +1 收起 理由
admin + 1 赞一个!

查看全部评分

回复 使用道具 举报
常登凯 发表于 2011-12-10 00:58
throw关键字用在是在程序代码中表示程序执行到这里就会抛出一个新的异常,也就是在你想要抛出异常的地方用 ...

多谢评论!解释非常好理解,谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马