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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张英杰 黑马帝   /  2011-10-9 09:46  /  2166 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法里捕获了异常就不用再throws声明了
回复 使用道具 举报
在函数内通过throw手动抛出异常,则必须先在函数上用throws声明,否则编译失败,为什么我在函数内抛出ArithmeticException时没有在函数上声明也可以编译通过?

4 个回复

倒序浏览
什么意思?贴些你的代码
回复 使用道具 举报
本帖最后由 成杰 于 2011-10-9 10:03 编辑

程序中可以不申明抛出异常(throws   Exception)而直接抛出异常(throw   Exception)。
如果方法抛出的是已检查异常(checked),则必须声明,如果抛出的是未检查异常,则不需声明.java语言规范中将任何Error的子类以及RuntimeException的子类都称为未检查异常,而其他异常都被成为已检查异常。具体他们的子类有哪些,可以查看API文档。
回复 使用道具 举报
throws通常由系统自动将所有捕获的异常信息向上抛一级
throw则需要用户自己捕获相关的异常

如果在方法中会有异常被抛出而你又不希望在这个方法体内对此异常进行处理,可以使用throws在声明方法的时候同时声明他可能会抛出的异常
举个例子:
public void eMethod() throws SQLException
{...
Connection conn = ds.getConnection(); //这里可能会抛出SQLException,但现在我们使用throws 在方法名处声明了,所以在方法体中就不需要    try/catch块来处理这个异常了
}
通常在一个方法的声明处通过throws声明方法可能抛出的异常信息,而在方法内部通过throw声明一个具体的异
常信息   ,如果一段程序代码抛出了异常,你没有捕捉,也没有用throws来声明。这在编译时将不会通过
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马