2021-05-08

Java的异常

Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。
一.Checked异常
只有Java语言提供了Checked异常,其他语言都没有提供Checked异常,Checked异常是除RuntimeException以外的异常类。Java认为Checked异常都是可以被处理(修复)的异常,它们的共同特点是:编译器会 检查这类异常是否进行了处理,即要么捕获,要么不抛出,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异 常,该程序在编译时就会发生错误,无法通过编译。
二.Runtime异常(运行时异常)
运行时异常是继承RuntimeException类的直接或间接子类。它们的共同特点是:编译器不检常是进
行了处理,也就是对于这类异常不捕获也不抛出,程序也可以编译通过。
在这里插入图片描述

Runtime异常则更加灵活,Runtime异常无须显式声明抛出,如果程序需要捕获Runtime异常,也可以 使用try…catch块来实现。
三.throws与声明方法抛出异常
在一个方法中如果能够处理异常,则需要捕获并处理。但是本方法没有能力处理该异常,捕获它没有
任何意义,则需要在方法后面声明抛出该异常,通知上层调用者该方法有可以发生异常。使用throws声明抛出异常的思路是,当前方法不知道如何处理这种类型的异常,该异常应该由上级调用者处理(相当于甩锅,踢皮球);如果main方法也不知道如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常将 交给JVM处理。JVM对异常的处理方法是,打印异常的跟踪栈信息,并中止程序运行。
四.throw与显式抛出异常
Java也允许程序自行抛出异常,自行抛出异常使用throw语句来完成(注意此处的throw没有面的s),如果需要在程序中自行抛出异常,则应使用throw语句Java异常相关的关键字中它们throws和throw两个非常相似,throws用于方法后声明抛出异常,而throw关键字用来人工引发异常。throw语句抛出的不 是异常类,而是一个异常实例,而且每次只能抛出一异常实例。
五.自定义异常类
有些公司为了提高代码的可重用性,自己开发了一些Java类库或框架,其中少不了自己编写了一些异常类。自定义异常都应该继承Exception基类;如果希望自定义Runtime异常,则应该继承 RuntimeException基类。定义异常类时通常需要提供两个构造器:一个是无参数的构造器;另一个是带 个字符串参数的构造器,这个字符串将作为该异常对象的描述信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值