java中的Error 与 Exception

1.    综述

    java中有java.lang.Throwable,以及其子类 java.lang.Exception和java.lang.Error

    Error:描述内部系统错误或资源枯竭的状态。(例如VirtualMachineError, 

            LinkageError)程序员通常对此无能为力,一旦发生,想办法令其优雅地结束

    Exception:自己程序导致的问题,可以捕获,进行处理

    下面着重介绍异常处理。

2.    Exception Handling

(1)    异常:程序执行中的非正常事件,程序无法再按预想的流程执行 

        将错误信息传递给上层调用者,并报告“案发现场”的信息 

        方法throws一个封装异常信息的类(即异常类)

        方法立即终止,且不返回任何值

        而且,执行并不重返调用该方法的代码处,而是找异常处理程序,

        如果找不到异常处理程序,整个系统完全退出。

        

        使用try-catch语句进行捕获处理。

(2)checked和unchecked异常

    java中继承自Throwable的类:

    

    Exception主要分两类:RuntimeException和其他Exception

    先介绍RuntimeException:

    即运行时的异常,运行异常是由程序员编程时处理不当造成的,

    而其他异常是由外部原因造成的。

    如果存在RuntimeException:是程序员的错误,程序员能对其进行修改。

    若存在非运行时异常,是程序员无法完全控制的外在问题所导致的

    a.    对于RuntimeException和Errors,编译器无法进行检查,因此为Unchecked 

           Exceptions。

            Error发生时无能为力,而RuntimeException出现意味着你要重新代码修复错误,

            而不是对这种错误进行捕获和处理。

    b.    对于除了RuntimeException之外的Exception,编译器会提醒你对其进行处理或

            声明处理不了。

    若自建Exception类,当从RuntimeException派生时,可以不处理,编译器也不提醒,但

    执行时出现就会导致失败,类似于动态类型检查。

    若从Exception类中派生子类型,则必须捕获并指定错误处理器handler,否则无法通过编

    译,类似于静态类型检查。

(3)对异常的处理

    五个关键字:

    try,catch,finally,throws,throw

    throws 声明异常

    throw 抛出异常

    try catch finally 捕获并处理异常

    (a)尽量使用unchecked exception来处理编程错误的情况:

    如果client端对某种异常无能为力,可以把它转变 为一个unchecked exception,程序被

    挂起并返回 客户端异常信息

    (b)错误可预料,但无法预防,但可以有手段从中恢复,此时使用checked exception

    unchecked与checked对比:

    

    a. throws:

    “异常”也是方法和 client端之间spec的一部分,在post-condition中刻画

        

    LSP:

    如果子类型中override了父类型中的函数,那么子类型中方法抛出的异常不能比父类型抛出的异常类型更广泛 。

    子类型方法可以抛出更具体的异常,也可以不抛出任何异常

    未完待续。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值