zoukankan      html  css  js  c++  java
  • Throwable和Exception;throw与throws

         所有异常对象的根基类是 Throwable ,Throwable从Object直接继承而来(这是java系统所强制要求的),并且它实现了 Serializable接口(这为所有的异常对象都能够轻松跨越Java组件系统做好了最充分的物质准备)。两个子类,Error与Exception。Exception是java程序员所最熟悉的,它一般代表了真正实际意义上的异常对象的根基类。也即是说, Exception 和从它派生而来的所有异常都是应用程序能够catch到的,并且可以进行异常错误恢复处理的异常类型。而Error则表示Java系统中出现了一个非常严重的异常错误,并且这个错误可能是应用程序所不能恢复的,例如LinkageError ,或 ThreadDeath 等。

              Error 和 RuntimeException 的子类是 unchecked 的,也就是不需要明确地 throws Error 也能编译通过。RuntimeException 表示这种异常是否出现经常不可预料,出现了的话,就中止处理。Error 一般表示无法恢复的故障,也就是你再试一次依然会出错,比如 OutOfMemoryError,试多少次很大概率出错的;Exception 则表示一般性的异常,而且这种异常是设计中早已考虑到很常见的错误,并且一定要求在设计中说明如果处理这种异常。

            RuntimException 更接近我们日常生活中的“意外”。Exception 这个更接近我们日常生活中所说的“常见错误”。Error 更像是”见鬼,看来周末国庆不加班是搞不定的“。

     

    Error类和Exception类的父类都是throwable类,他们的区别是:

    Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。

    Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

    Exception类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception ),运行时异常;ArithmaticException,IllegalArgumentException,编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用try。。。catch捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。

    throw与throws的区别

    1.throw用在方法体内,throw是语句抛出一个异常(对象);throws是用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。

    2.throw是具体向外抛异常的,抛出的是一个异常实例(代码中对应的有model);throws声明了是哪种类型的异常,使它的调用者可以捕获这个异常。

    3.throw,如果执行了,那么一定是抛出了某种异常;而throws表示可能出现。

    4.同时出现的时候,throws出现在函数头,throw出现在函数体,两种不会由函数处理,真正的处理由函数的上层调用处理。

  • 相关阅读:
    ReentrantLock可重入锁的使用场景(转)
    可重入锁(good)
    AbstractQueuedSynchronizer的介绍和原理分析(转)
    Android DB类,支持MDB,SQLITE,SQLSERVER,支持查询、事务,对象直接插入和更新操作等
    sqlite 时间函数及时间处理
    android query 模糊查询
    Android 时间轴
    Android fastjson
    Android SQLite案例
    Android 查看和管理sqlite数据库
  • 原文地址:https://www.cnblogs.com/sam-cheng/p/8568702.html
Copyright © 2011-2022 走看看