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.youkuaiyun.com/xukunddp