黑马程序员技术交流社区

标题: Exception问题 [打印本页]

作者: 张英杰    时间: 2011-10-9 09:46
标题: Exception问题
在函数内通过throw手动抛出异常,则必须先在函数上用throws声明,否则编译失败,为什么我在函数内抛出ArithmeticException时没有在函数上声明也可以编译通过?
作者: 丁林    时间: 2011-10-9 09:49
什么意思?贴些你的代码
作者: 成杰    时间: 2011-10-9 09:53
本帖最后由 成杰 于 2011-10-9 10:03 编辑

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

如果在方法中会有异常被抛出而你又不希望在这个方法体内对此异常进行处理,可以使用throws在声明方法的时候同时声明他可能会抛出的异常
举个例子:
public void eMethod() throws SQLException
{...
Connection conn = ds.getConnection(); //这里可能会抛出SQLException,但现在我们使用throws 在方法名处声明了,所以在方法体中就不需要    try/catch块来处理这个异常了
}
通常在一个方法的声明处通过throws声明方法可能抛出的异常信息,而在方法内部通过throw声明一个具体的异
常信息   ,如果一段程序代码抛出了异常,你没有捕捉,也没有用throws来声明。这在编译时将不会通过
作者: 王春艳    时间: 2011-10-9 10:14
方法里捕获了异常就不用再throws声明了




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