浅谈Java异常

 何为异常?当Java程序违背了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。

 java.lang.Throwable是所有异常的父类!

Throwable有两个子类,分别是Error,Exception.

      Error表示非常严重的错误,恢复是一件很困难的事情。

      Exception表示一种设计或实现的问题。而Exception又分为受检异常和非受检异常:

               1.受检异常(CheckedException):需要抛出异常或用try...catch语句显示的捕获,比如IOException.

                2.非受检异常或运行时异常(RuntimeException):不需要用try...catch语句显示的捕获异常,

                   常见的有:

                                   NullPointerException--------空指针异常

                                   ClassCastException--------类型强制转换异常

                                   IndexOutOfBoundsException--------数组下标越界异常

                                   IllegalArgumentException--------传递非法参数异常

 异常捕获:

       对于try..catch捕获异常的形式来说,对于异常的捕获,可以有多个catch

       对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。如果有finally的话进入到finally里面继续执行。

       换句话说,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch


关于finally的面试题:

public class Test{

    public static void main(String[] args){

        System.out.println(new Test().test());

    }

    public int test(){

        int res = 1;

        try{

            throw new Exception();

        }catch(Exception e){

            return res;

        }finally{

            res = 2;

            System.out.println("finally");

        }

    }

}


程序输出结果为:

   finally

   1

解释:

    return之前跳到finally,此时要return 的值已经被存到一个局部引用变量里了,finally中对res的改变对返回值没有影响





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值