JAVA如何抛出异常

JAVA如何抛出异常

2011-07-07 13:54 mengmeng2xiao  |  浏览 49337 次
  java
2011-07-07 13:59 提问者采纳
如果你知道你写的某个函数有可能抛出异常,而你又不想在这个函数中对异常进行处理,只是想把它抛出去让调用这个函数的上级调用函数进行处理,那么有两种方式可供选择:

第一种方式:直接在函数头中throws SomeException,函数体中不需要try/catch。比如将最开始的例子中的testEx2改为下面的方式,那么testEx1就能捕捉到testEx2抛出的异常了。
    boolean testEx2() throws Exception{
        boolean ret = true;
        int b=12;
        int c;
        for (int i=2;i>=-2;i--){
            c=b/i;
            System.out.println("i="+i);
        }
        return true;    
}
第二种方式:使用try/catch,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常:
    boolean testEx2() throws Exception{
        boolean ret = true;
        try{
            int b=12;
            int c;
            for (int i=2;i>=-2;i--){
                c=b/i;
                System.out.println("i="+i);
            }
            return true;
        }catch (Exception e){
            System.out.println("testEx2, catch exception");
            Throw e;
        }
    }
第三种方法:使用try/catch/finally,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常:
    boolean testEx2() throws Exception{
        boolean ret = true;
        try{
            int b=12;
            int c;
            for (int i=2;i>=-2;i--){
                c=b/i;
                System.out.println("i="+i);
                throw new Exception("aaa");
            }
            return true;
        }catch (java.lang.ArithmeticException e){
            System.out.println("testEx2, catch exception");
            ret = false;
            throw new Exception("aaa");
        }finally{
            System.out.println("testEx2, finally; return value="+ret);
        }

}
评论(2)  |  66  9

c15836 | 来自团队:JAVA王朝 | 十二级 采纳率70%

擅长: JAVA相关 数据库DB 长沙市 岳阳市 交通出行

类似问题最新采纳 2013-11-25 21:08
原问题: java抛出异常
在Java语言中很少有那种特性像异常这样被广泛的误解。
异常必须声明为方法签名的一部分,而且如果一个方法抛出某种异常,所有调用过次方法的代码要么需要声明抛出同样的异常,要么就需要放进去try块里面,而且调用方法中必须宝行捕抓并处理此类异常的代码。但是往往大部分程序员都不喜欢做这种麻烦而且繁琐、鼓噪无味的工作。。。

其实,异常绝对是Java里面的东西,正确的使用能使你的代码运行起来更可靠、和管理。不过也有例外的,例如像一些大型的工业控制应用,都会有使用一些自己的库,来杜绝异常的使用(当然在库里面他们肯定也是已经处理好了的),但这种情况比较少见。。。

具体的原理和概念则是,在Java里面,Excpetion和RunException都是继承了Throwable类,任何只要是Throwable类的实例,都是可以通过throw语句中返回,而这个动作,就会给异常处理块捕获了。。。。

我的建议还是你应该好好的去了解并学习一下这块,要有一个程序的关于异常系统的设计理念。
收起
huangjiding  |四级

为您推荐:

按默认排序 | 按时间排序

其他3条回答

2011-07-07 14:17 Yoona_candy  | 三级
try{

}catch (java.lang.ArithmeticException e){
System.out.println("");
throw new Exception("");
}finally{
System.out.println("");
}
评论  |  3  2
2011-07-07 13:57 徐__MenG  | 十二级
在方法中throw
评论  |  2  0
2011-07-07 15:03 cs3793  | 二级
方法上用throw或者在try catch中用throws 抛出
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值