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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马郑毅雄 初级黑马   /  2012-11-15 09:55  /  1990 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马郑毅雄 于 2012-11-15 20:55 编辑

throw和throws有什么区别,什么时候用throws,什么时候用throw呢

评分

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

查看全部评分

5 个回复

倒序浏览
throws用来声明异常(类), throw用来抛出一个异常(对象), 两者功能各不相同, 效果也不可能一样. 前者出现在方法声明中, 后者出现在方法体中.
throws声明和throw语句的关系:
用throws声明了抛出异常的方法, 不一定要抛出实际的异常, 如
void Method() throws Exception {
throw new Exception(); //此句可以出现也可以不出现
}
而反过来, 如果方法体中有明确的throw语句, 而又没有包裹在try{}块中, 那么一定要在方法上声明出来, 如
void Method() {
throw new Exception();
}
这句是不能编译的, 必须在方法声明后面加上throws Exception.throws用在方法后面,表示这个方法有可能抛出一个Exception
不加try catch 表示你不处理,不处理你就得往上抛,抛的最终就是抛给java虚拟机。

评分

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

查看全部评分

回复 使用道具 举报
throws说明你有哪个可能,倾向   
throw的话,那就是你把那个倾向变成真实的了
同时:
1)throws出现在方法函数头;而throw出现在函数体;   
2)throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常;   
3)两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

评分

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

查看全部评分

回复 使用道具 举报
throws 用于抛出方法上的异常,并且直接由方法调用异常处理类来处理该异常,常用在方法的后面。
throw 用于方法块里面的代码,表示抛出异常,但不会处理,而是由方法块的throws Exception来调用异常处理类来处理

评分

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

查看全部评分

回复 使用道具 举报
throws 用于在方法上抛出异常,表示程序有可能会出现异常,抛出RuntimeException时,则为运行时异常,抛出Exception时,则为编译时异常,并且该异常必须使用try-catch进行抓处,否则编译不能通过。
throw 用于在局部抛出异常,如果抛出的异常为RuntimeException那么在方法上可以不使用throws进行申明该异常,如果抛出的异常为Exception那么必须在方法上进修throws申明,并且该异常必须使用try-catch进行抓处,否则编译不能通过。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
梁俊 黑马帝 2012-11-15 11:58:19
地板
本帖最后由 梁俊 于 2012-11-15 12:03 编辑

throws和throw的区别
throws使用在函数上。
throw使用在函数内。
throws后面跟的异常类,可以跟多个,用逗号隔开。
throw后跟的是异常对象。

当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。
要么在内部try catch处理。用throw
要么在函数上声明让调用者处理。用throws
一般情况在,函数内出现异常,函数上需要声明。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马