异常笔记整理

异常的概述:

java程序运行过程中,出现的不正常情况,出现的错误,称为异常

异常的体系:

在这里插入图片描述

Throwable:
可抛出的,是异常体系的顶层父类,其他的异常或者错误都是Throwable的子类类型
只有Throwable的体系类型,才可以使用异常的处理机制
Error
错误,是Throwable的子类,用于描述那些无法捕获和处理的错误情况
属于非常严重的错误,没救了,等死吧
StackOverflowError   栈溢出
Exception
异常,是Throwable的子类,用于描述那些可以捕获和处理的例外情况
属于不太严重的错误,还可以抢救一下。。。。。。。。
ArrayIndexOutOfBoundsException   数组越界异常
RuntimeException
运行时异常,是Exception的特殊的子类,在编译阶段不做检查的一个异常

体系图:

在这里插入图片描述

在jvm中默认处理异常的机制

1、在代码的某个位置,出现了和正常情况不同的情况,就将异常情况封装到一个异常对象中。
2、将异常对象抛给调用该方法的方法
3、某个方法接收到底层方法抛上来的异常,也没有办法自己处理,继续向上抛出,
   最终抛给主方法,主方法也没有办法处理,抛给调用自己的jvm虚拟机
4、Jvm虚拟机是我们手动调用的,只能将异常对象的所有信息,通过错误流打印出来,
   结束jvm虚拟机
5、总结,jvm默认处理的方式:【一层一层向上抛,jvm接收到之后结束自己】

手动处理异常的方式

在这里插入图片描述

继承体系中的常用方法

1、发现在异常的继承体系中,所有的方法定义在了Throwable这个顶层父类中,
   子类中几乎没有什么特有方法
   
2、Throwable中的构造方法:
 	Throwable():创建一个没有任何参数的异常对象
 	Throwable(String message):创建一个带有指定消息的异常对象
 	Throwable(Throwable cause):创建一个有原因异常的异常对象
 	
3、常用成员方法:
 	getCause():获取异常对象中的原因异常,也就是当前异常对象的一个成员变量
 	getMessage():获取异常的详细信息
 	toString():获取异常对象的详细信息
 	printStackTrace():打印异常的调用栈轨迹(有关异常的方法调用路径)

自定义异常

1、jdk中提供了很多的异常类型,其中的绝大部分都没有自己特有的方法

2、定义这么多异常,没有特有方法、没有特有属性,原因:
 	1.如果有了很多的异常类型的名字,将来在不同的异常情况下,就可以使用不同的异常类型
 	   创建对象。一旦发生了异常,可以很容易通过异常的类名来判断到底发生了什么异常情况
 	2.如果有了很多的异常类型,不同的异常类型,就可以有不同的处理方式
3、在自己的业务中,jdk提供的各种异常,都无法描述当前的异常情况,就需要我们自己定义异常
   类型,用在自己的项目的业务中。
4、自定义异常的步骤: 	
 	1、定义一个类,以Exception结尾,IllegleAgeException,表示是一个非法年龄异常
 	2、让自己定义的这个类,继承一个Exception或者是RuntimeException 	 	
 	 	如果定义的是编译时异常,就使用Exception
 	 	如果定义的是运行时异常,就使用RuntimeException
 	3、构造方法不能被继承,需要手动添加

总结七问:

1.简述什么是异常、异常的继承体系?
	
2.简述异常的处理方式?

3.throw和throws关键字的使用位置和格式?

4.多个catch处理的注意事项?

5.简述finally关键字的特点和作用?

6.Throwable类的常见方法及方法描述?

7.自定义异常的步骤?
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值