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出现在函数体,两种不会由函数处理,真正的处理由函数的上层调用处理。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
throwthrows和Throwable这三个概念在Java中有不同的含义和用法。 1. throw: throw是一个关键字,用于在方法体内部显式地抛出异常。使用throw关键字后面跟着一个异常对象,表示出现了某种异常情况。一旦抛出异常,程序会立即停止执行,并且异常对象会被传递给调用栈中的相应的catch块进行处理。 2. throws: throws也是一个关键字,用于方法声明中。它跟在方法名后面,后面跟着异常类名。它表示该方法可能会抛出指定的异常,告诉调用者需要对可能发生的异常进行处理。当方法中可能抛出多种异常时,可以使用逗号分隔多个异常类名。 3. Throwable: Throwable是Java中所有异常类的基类。它是一个类层次结构的根,定义了处理和传播异常的基本行为。Throwable类有两个重要的子类:Exception和Error。Exception类表示可恢复的异常,通常由程序错误引起,可以通过合适的处理方式进行捕获和处理。Error类表示不可恢复的错误,通常由系统错误或资源耗尽等情况引起,程序无法处理。 总结: - throw用于在方法体内抛出异常对象; - throws用于方法声明中,指定方法可能抛出的异常; - Throwable是所有异常类的基类,分为Exception和Error两个子类。 通过使用throwthrows,我们可以在代码中处理异常情况,并在必要时向上层调用栈传递异常信息,以便进行适当的处理和错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值