Java的异常抛出与捕获

Java的异常

异常的定义:异常事件,程序无法按照预期的流程执行,将错误信息传递给上层的调用者并报告案发现场的信息,如果找不到一个异常处理程序,整个系统完全退出

Java内置了一套异常处理机制来表示错误,属于java中的一个类,其继承树如下所示:
在这里插入图片描述
Error:表示严重的错误,程序一般无能为力
在这里插入图片描述
在这里插入图片描述
Exception:运行时产生的错误,可以被捕获和处理
RuntimeException
IOException&ReflectiveOperationException

java规定:
必须捕获的异常:Exception及其子类,不包括RuntimeException及其子类
不需要捕获的异常:Error及其子类 ,RuntimeException及其子类

异常的捕获

在java中异常的捕获利用try…catch捕获,可能抛出异常的语句放置在tyr{…}中,然后用catch捕获对应的异常。可以利用多个catch语句进行捕获,jvm在捕获到异常后会从上至下进行匹配,直到匹配到对应的异常,因此异常的子类必须写在父类前面,否则永远不会被捕获到。

如果无论是否有异常都想进行某种固定的操作,比如释放空间或者清理工作,可以利用finally语句,其放置在最后,无论是否有异常被捕获都会执行。

如果某几种异常的处理程序相同,可以利用|合并到一起,减少代码的长度。

try{
//可能抛出异常的语句
}catch(Exception1|Exception2|Exception3  e){
	System.out.println(e.message);   //执行相同操作:输出异常信息
}finally{
//to do something or nothing
}

自定义异常

java标准库中定义的常用异常有如下几种:
Exception

├─ RuntimeException
│ │
│ ├─ NullPointerException
│ │
│ ├─ IndexOutOfBoundsException
│ │
│ ├─ SecurityException
│ │
│ └─ IllegalArgumentException
│ │
│ └─ NumberFormatException

├─ IOException
│ │
│ ├─ UnsupportedCharsetException
│ │
│ ├─ FileNotFoundException
│ │
│ └─ SocketException

├─ ParseException

├─ GeneralSecurityException

├─ SQLException

└─ TimeoutException

在大型项目中,我们往往需要定义自己的异常,一般的方式是以一个基础异常作为父类,派生出各种子类异常,通常选择RuntimeException作为父类,为自己定义的异常提供多种构造方法,方便我们构造异常实例。

public class BaseException extends RuntimeException {
    public BaseException() {
        super();
    }

    public BaseException(String message, Throwable cause) {
        super(message, cause);
    }

    public BaseException(String message) {
        super(message);
    }

    public BaseException(Throwable cause) {
        super(cause);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值