java必知必会-java异常

系列文章目录

java必知必会-java环境搭建
java必知必会-java开发工具安装与使用
java必知必会-java关键字、变量和常量
java必知必会-java数据类型和变量定义
java必知必会-java类和对象
java必知必会-java面向对象的三大特性
java必知必会-java继承与重写、重载
java必知必会-java构造方法与访问修饰符
java必知必会-java抽象类与接口
java必知必会-java常见关键字及其作用



前言

本文介绍java中的异常的使用


一、什么是异常?

  • Java异常是Java提供的一种识别及响应错误的一致性机制。
  • Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性
  • Java把异常信息封装成一个类。异常时会创建异常类对象并抛出异常信息(如异常位置、原因)
  • Exception 类及其子类是 Throwable 的一种形式,它用来表示java程序中可能会产生的异常,并要求对产生的异常进行合理的异常处理
  • 异常处理的性能成本非常高;仅在异常情况下使用异常;在可恢复的异常情况下使用异常;

二、异常处理

  • 在一个方法中如果发生异常,这个方法会创建一个异常对象,并转交给 JVM,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并转交给 JVM 的过程称为抛出异常。可能有一系列的方法调用,最终才进入抛出异常的方法,这一系列方法调用的有序列表叫做调用栈。JVM 会顺着调用栈去查找看是否有可以处理异常的代码,如果有,则调用异常处理代码。当 JVM 发现可以处理异常的代码时,会把发生的异常传递给它。如果 JVM 没有找到可以处理该异常的代码块,JVM 就会将该异常转交给默认的异常处理器(默认处理器为 JVM 的一部分),默认异常处理器打印出异常信息并终止应用程序。
  • 抛出异常:throw new 异常类名(参数):抛出异常告知调用者。可以抛出所有异常;throw抛出的异常,本身不捕获就要throws抛出
  • 声明异常:方法 throws 异常类名1,异常类名2… {} 声明异常,交给调用者去处理。非检查异常(Error、RuntimeException 或它们的子类)不可使用 throws 关键字来声明要抛出的异常
  • 捕获异常:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理
    • try catch finally:检测异常,并传递给catch处理,并在finally中进行资源释放
    • try catch:对代码进行异常检测,并对检测的异常传递给catch处理.对异常进行捕获处理
    • try 多个catch:对代码进行异常检测,并对检测的异常传递给catch处理,多个catch中的异常不能相同,子类异常要求在上面的catch处理,父类异常在下面的catch处理。有继承关系的异常会最先捕获
    • try finally:异常是没有捕获处理的,finally,只为关闭资源
    • finally:一定会执行的,即使在try{}catch{}中有return;finally的return决定该方法的结果
  • 异常的处理,指处理异常的一种可能性,即有了异常处理的代码,不一定会产生异常;如果没有产生异常,则代码正常执行,如果产生异常,则中断当前执行代码,执行异常处理代码
    • String getMessage():返回此throwable的详细消息字符串
    • void printStackTrace():将此throwable及其追踪输出至标准错误流
    • String toString():返回此throwable的简短描述

三、子类重写方法注意事项

父类子类重写方法的细节(“不能比父类多”)
如果父类方法声明异常子类只能声明父类异常或者该异常的子类,或者不声明
当父类方法声明多个异常时子类覆盖时只能声明多个异常的子集
当被覆盖的方法没有异常声明时子类覆盖时无法声明异常的。此时子类产生该异常,只能捕获处理,不能声明抛出
当多异常处理时,捕获处理前边的类不能是后边类的父类
接口中没有声明异常,而实现类覆盖方法时发生了异常只能catch的捕获继续throw抛出,并将异常转换成RuntimeException子类抛出

四、自定义异常

  • 继承Exception,必须throws声明,一声明就告知调用者捕获,问题处理了调用者的程序会继续执行
  • 继承RuntimeExcpetion,不需throws声明的,调用者不需要编写捕获代码的,因为调用根本就不知道有问题。一旦发生异常,调用者程序会停掉,并由jvm将信息显示到屏幕,让调用者修正代码
Class 异常名 extends Exception{ 
	//编译时异常继承Exception,运行时异常继承RuntimeException。
	public 异常名(){
		super();
	}
	public 异常名(String s){ 
		super(s); 
	}
}

总结

本文介绍了java异常的使用,如果有任何疑问欢迎私信或者评论

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值