Java受查异常和运行时异常的理解
概念与理解
Java提供三种可抛出结构(throwable):受查异常(checked exception),运行时异常(runtime exception),错误(error)。
着重理解受查异常和运行时异常两种。
1.受查异常可以理解为编译异常,即出现受查异常,编译不能通过,IDE会红线警告!
运行。
2.运行时异常顾名思义,是当程序运行时才发生的,也叫非受查异常。
编译器不硬性要求编译前处理的异常,即使你有可能出现,我要不在编译时进行检查。常见的有NullPointerException,IndexOutOfBoundsException等。
想象一下,编译器检查程序是否空指针费不费力,检查代码数组是否越界复不复杂。所以这部分工作留到运行时处理。
怎么处理
1.受查异常
上面例子中testCheckedException方法中因为sleep throw InterruptedException,编译器认为调用sleep方法时也有可能出现,所以
1)要不给sleep方法包一层try catch;
2)要不就定义testCheckedException throw InterruptedException也抛出让外层处理。
2.运行时异常
程序运行时出现的异常,概念部分常见的几个例子。不处理编译器也不会警告!
1)捕获。
2)往外抛出
3)不处理。
比较常见的做法是不处理,当然不处理并不是什么好事,因为一旦出现运行时异常,一般是程序的逻辑出现问题,很难通过原有代码处理,肯定要手动修改代码处理。比如数组越界了,可能有bug嘛。应该从提高代码质量着手避免此类异常。