异常

Throwable类是Java语言中所有异常和错误的超类(可以理解为是仅次于之前学的Object顶级类的超类)。只有作为此类(或其一个子类)的实例的对象有Java虚拟机抛出,或者可以由Java throw语句抛出

Throwable的两个子类的实例'Error'和'异常'通常用于表示出现异常情况

Error:表示严重的问题,合理的应用程序不应该试图捕获(即此时java程序是无能为力的),大多数这样的错误是异常情况。例如硬件层面的问题、内存资源不足等

异常:表示合理应用程序可能想要捕获的条件,这里的条件指的是异常 检查异常:'异常类'和'不是RuntimeException的子类的任何类',检查异常是编译期间必须要处理的,否则程序不会被编译更不会运行

RuntimeException类的异常:是在Java虚拟机的正常操作期间可以抛出的异常的超类。例如索引越界 RuntimeException及其子类的异常:是未经检查的异常,即在编译期间是不需要检查的,出现问题才需要自行检查代码

总结: 1、异常就是程序出现了不正常的情况 2、异常体系指Throwable。Throwable又分为Error、Exception。Exception又分为RuntimeException、非RuntimeException 3、Error是严重问题,不需要处理 4、Exception是异常类,表示程序本身可以处理的问题 5、Exception中的RuntimeException表示在编译期间是不检查的,出现问题后,需要我们回来修改代码 6、Exception中的非RuntimeException表示在编译期间必须处理,否则程序不能被编译,更不能运行

 

异常的练习

 

JVM的默认处理异常方案

默认处理具体做了如下的事情: 1、把异常的名称,异常的原因即异常出现的位置等信息输出在了控制台 2、程序停止执行

 

JVM默认处理异常方案的练习

 

异常处理_trycatch

JVM的默认处理会把程序停止运行,是非常不便于实际开发的。于是,我们来学一下怎么自己处理异常,如下

异常处理 如果程序出现了问题,我们需要自己来处理,有两种方案: 1、使用try...catch... (对于编译时异常,经常使用这种处理方案) 2、使用throws

这里先学习'使用try...catch...'的处理方案,格式如下

'使用try...catch...'处理方案的执行流程,如下 1、程序从try里面的代码开始执行 2、出现异常,会自动生成一个异常类对象,该异常类对象奖杯提交给java运行时系统 3、当java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理 4、执行完毕后,程序还可以继续往下执行

 

异常处理_trycatch的练习

 

Throwable的成员方法

Throwable是所有错误和异常的祖宗类(超类),即Throwable的所有子类都可以使用Throwable的成员方法。Throwable的成员方法如下

方法名说明
public String getMessage()返回此Throwable的详细信息字符串
public String toString()返回此可抛出的简短描述
public void printStackTrace()把异常的错误信息输出在控制台

 

Throwable成员方法的练习

 

编译时异常和运行时异常的区别

java中的异常被分为两大类:'编译时异常'和'运行时异常',也被称为'受检异常'和'非受检异常'

所有的RuntimeException类及其子类被称为'运行时异常',其他的异常都是'编译时异常'

什么是编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译

什么是运行时异常:无需显示处理,也可以和'编译时异常'一样处理

 

编译时异常和运行时异常区别的练习

 

异常处理_throws

虽然我们通过try…catch…可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理,也就是说,有些时候可能出现的异常是我们处理不了的,这个时候就需要使用throws这个异常处理方案

throws异常处理方案的格式:

总结: 1、编译时异常必须要进行处理,两种处理方案:try…catch…和throws,如果使用的是throws这种方案,将来谁调用谁处理 2、运行时异常可以不处理,出现问题后,需要我们回来修改代码

 

异常处理_throws的练习

 

自定义异常

自定义异常的格式

throws和throw的区别,如下

 

自定义异常的练习