Throwable和Exception;throw与throws

 

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

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

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

 

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

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表示可能出现。get

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

相关文章
相关标签/搜索