异常的使用-checked or unchecked
Posted youxin2012
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常的使用-checked or unchecked相关的知识,希望对你有一定的参考价值。
较之于unix系统和c-based系统中以返回值表示子程序的成功与否,其中返回值包括异常码与正常返回码(常用 负数 表示不同异常,0表示正常结束)。java提供了专门的异常机制,可以发生异常与程序返回值做分离。异常的抛出,可以让我们及时采用正确的策略做处理。
java中异常有两类:受检异常(checked exception)和非受检异常(uncchecked exception)。在实现功能模块时,常常会根据模块功能的需要,自定义相应的异常。
自定义异常的实现:
通过继承Exception 可以实现受检异常的定义。例
public class BalanceExption extends Exception() {...}
通过继承RuntimeException 可以实现受检异常的定义。例
public class BalanceExption extends RuntimeException() {...}
应用场景:
当异常的发生是由于编程操作的错误(程序员犯错)时,我们常常采用 unchecked exception.
例如 数组取值越界 时抛出的IndexOutOfBoundsException 则应 采用非受检异常。如下为Vector对索引值的检查,即常用非受检异常
public synchronized int lastIndexOf(Object o, int index) {
if (index >= elementCount)
throw new IndexOutOfBoundsException(index + " >= "+ elementCount);
if (o == null) {
for (int i = index; i >= 0; i--)
if (elementData[i]==null)
return i;
} else {
for (int i = index; i >= 0; i--)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
当需要对参数做合法性检查以及应付系统操作(读写文件、db异常等)时,常常采用 受检异常,提醒调用方此方法可能发生异常,强迫 调用需要时作异常做合理处理。
例银行取款子程序:
void withdraw(int amount) throws BalanceExption {
if(amount > balance) {
throw new BalanceExption(“amount > balance error”);
}
}
以上是关于异常的使用-checked or unchecked的主要内容,如果未能解决你的问题,请参考以下文章