异常知识点----自我总结
异常定义
异常是指在程序运行中导致程序行中断的指令流。 发生异常的程序在代码没执行完成便会退出,不再执行其后面的语句。
异常表现:
当输入的不是数字或是第二个输入为0时会发生异常
这只是简单的输入异常和算术异常。
异常体系结构
异常指的是Exception , Exception类, 在Java中存在一个父类Throwable(可抛出)
Throwable存在两个子类:
1.Error:表示的是错误,是JVM发出的错误操作,,是程序出现的错误问题,只能尽量避免,无法用代码处理。
2.Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。
对于异常分类我们可以分为两个类:
一、是受检异常,是在代码编写过程中出错位置发生报错,又称为非运行异常,是RuntimeException以外的异常
二、是非受检异常 是不受检查的检查不出,一旦运行就报错 ,又称运行时异常,都是RuntimeException类及其子类异常
如图:Throwable 是所有异常类的祖先
异常处理
在编译运行中我们所能遇到各种异常需要怎么处理?
一、异常捕获
- try-catch 格式
try{
// 有可能发生异常的代码段
}catch(异常类型1 对象名1){
// 异常的处理操作
}catch(异常类型2 对象名2){
// 异常的处理操作
}
… finally{
// 异常的统一出口
}
可以有多个catch块用来处理try块捕获的异常,在对应的catch块里异常类型要与相应的异常响应,否则没办法进行处理。
这里的finall块是必须执行的一部分,无论是否捕获以及处理了异常,finall块里的语句都是需要被执行的 - finally块是否执行的情况,有以下几点;
1.软件非正常执行完毕,关机、没电、内存里没有程序了,CPU关闭等 此时不执行
2.剩下的情况finally都是要执行的 有return 也会执行
3.以下这种情况是不会执行finally 的 这是唯一一种在代码块里会导致不执行finally的操作 在前面的代码块里有System.exit()。此时程序退出,故不再执行finally块里的代码。
4.Finally执行 离不开的两个点 一个是必然不执行,一个是return 的时机
二、抛出异常
抛出异常使用的是throws 、throw关键字;
异常抛出是把一个无法处理的异常层层上传抛出,一层一层的抛给上一个调用者,直到传回JVM,JVM中断程序。这种向上抛出异常的方法,如果JVM也处理不了,就会结束系统,无法处理。
throws关键字抛出异常
此关键字主要在方法的声明上使 用,表示方法中不处理异常,而交给调用处处理。
格式:返回值 方法名称()throws Exception{ }
Exception是所有异常的父类,如果声明的异常是Exception则表示抛出所有异常。如果抛出的一场有多个,可以把每个异常用逗号隔开。
throw关键字抛出异常
throw关键字表示在程序中人为的抛出一个异常,因为从异常处理机制来看,所有的异常一旦产生之后,实际上抛出 的就是一个异常类的实例化对象,那么此对象也可以由throw直接抛出。throw是在方法中抛出异常,且只能抛出一个异常
什么情况下需要抛出异常throws?
如果是因为传参导致异常 , 应该通过throws将异常抛出去
一个个人感觉很不错的异常知识总结博客
https://blog.****.net/qq_29229567/article/details/80773970