关于try{} catch(exception e )

由一句话带来的三种思考,起初看异常处理看得云里雾里,对于try catch()  更是不知所谓,最近看多线程以及到论坛查找,就这句话有了一些最基本的理解。 

   在java中,异常存在三种形式:

1、error,主要有jvm形成,不易捕获;

2、runtime exception,运行异常与环境有关,编译时无法检查,而且发生的情况复杂,JVM自动处理,无需人工捕获;

3、exception ,需要捕获的异常。

       首先exception 是程序应该捕获的异常,如果JVM产生了exception且没有捕获,那么程序将自动停止。try{ }中加入运行代码——可能会发生exception异常的的代码,如果这段代码存在异常,JVM将抛出这个异常,而catch( )将捕获抛出的异常,程序继续运行。换句话而言,try{}—catch()就是排除运行代码中的异常,catch(exception e)将抛出的异常显示出来。


throw与try catch

两者最大的区别就是throw直接抛出异常,无需自己处理,有程序以外的代码处理,至于什么异常开发者也不会知道,如果没有代码处理抛出的异常,程序将自动结束;

try catch可以捕获抛出的异常,并显示出来,开发者可以很明显的了解自己代码的异常。


 throw与throws

void doA(int a) throws Exception1,Exception3{
           try{
                 ......

           }catch(Exception1 e){
              throw e;
           }catch(Exception2 e){
              System.out.println("出错了!");
           }
           if(a!=b)
              throw new  Exception3("自定义异常");
}

代码中Exception1、 2、 3都可存在错误

如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。
而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。


throws是用在异常说明之后,若存在异常,将由方法的调用者执行;

throw是用在方法体内,抛出后由程序外的代码处理。


throws可能存在异常需要抛出,强调可能;

throw 则是抛出了一些具体的异常——一些已知的异常,执行throw代码就是抛出异常。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值