Java Exception系列一:关于throws和throw

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值