异常的使用-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的主要内容,如果未能解决你的问题,请参考以下文章

异常的使用-checked or unchecked

java中checked和unchecked 异常处理

java中checked异常和unchecked异常区别?

Java 基础 - check & unchecked exception

Java异常之checked与unchecked

基础知识《十》unchecked异常和checked异常