您的位置:首页 > 编程语言 > Java开发

Java Exception系列一:关于throws和throw

2011-04-01 20:56 302 查看
throws
异常说明,表示某方法可能
会抛出异常,用于某个方法后,后面接潜在的异常列表,如void func() throws

AException,BException {//...。

1).假设有方法void a() throws AException{},则这个方法不会抛出由AException或他的子类产生的异常,因为即使有也被显示

的用关键字throws抛出来了。有方法main()调用a(),则在方法main()中,要么捕获(snippet1.1),要么继续throws抛出

(snippet1.2)。

//snippet1.1

public class ThrowsExceptionCatch {

public static void main(String[] args){

try{

a();

}catch(SQLException se){

System.out.println("Dispose SQLException.");

}

}

static void a() throws SQLException{

System.out.println("throws SQLException.");

}

}

//snippet1.2

public class ThrowsException {

public static void main(String[] args) throws SQLException{

a(); //not catch due to above "throws SQLException"

}

static void a() throws SQLException{

System.out.println("throws SQLException.");

}

}

2).对于void a() {},不管a()方法内部有无可能产生AException,都可以在方法后面声明throws AException,类似于servlet中

的doGet/doPost方法,不论有没有在doGet/doPost方法内部产生servletException,在Eclipse中,servlet的代码生成模板默认

会throws servletException,为什么要这么做呢,个人感觉这个某种设计模式有关系,有利于结耦。值得注意的是,不论方法a

()内部是否产生AException,一旦声明throws AException,a()方法的调用者要么捕获,要么继续抛出,snippet1.1和1.2已作说

明。

throw
,表示产生了异常,只能用于方法内部,用法为"throw 异常对象",如void func() { throw new AException(); }。也可

以和异常声明同时使用。对于throw,一部分Exception需要catch,不然编译错误,具体请参阅Java Exception系列二



throws和throw主要区别:

一 用法,前者a() throws AException,BException{//...;后者a(){throw new AException();}。

二 意义,前者表明可能会抛出某种异常;后者表示产生了异常。

三 处理,前者a()被b()调用,b()要么捕获,要么继续抛出;后者产生的异常中,某些异常必须在a()内部捕获,某些可以不用。

如若转载,请说明出处!http://blog.csdn.net/xukunddp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: