异常

异常

什么是异常?

异常是指在程序的运行过程中所发生的不正常的事件,他会中断正在循行的程序

异常处理的5个关键字

捕捉异常:

  • try:执行可能产生的异常代码

  • catch:捕捉异常

  • finally:无论是否发生异常,代码总能执行(除非JVM停电System.exit(1))

声明异常

  • throws:声明方法可能要抛出的异常

抛出异常

  • throw:手动抛出异常

使用try-catch块捕获异常,分为三种情况:

第一种情况(没有异常)

1
2
3
4
5
6
7
8
public class method(){
try{
//代码块(这块区域不会产生异常)
}catch(异常类型 e){
//对异常进行处理的代码块
}
//代码段
}

运行到try块里没有检查出异常代码则会不执行catch里的代码块。

第二种情况(出现异常)

1
2
3
4
5
6
7
8
9
10
public class method(){
try{
//代码段1
//产生异常代码段2
//代码段3
}catch(异常类型 e){
//对异常进行处理的代码块4
}
//代码段5
}

异常是一种特殊的对象,类型为Java.lang.Exception或其子类

执行到try时候发现异常–产生异常对象–异常类型匹配—进入catch代码块—然后在执行try-catch后的代码

第三种情况(异常类型不匹配)

1
2
3
4
5
6
7
8
9
10
public class method(){
try{
//代码段1
//产生异常代码段2
//代码段3
}catch(异常类型 e){
//对异常进行处理的代码块4
}
//代码段5
}

执行到try时候发现异常–产生异常对象–异常类型不匹配—程序中断运行

在try-catch块后加入finally块

  • 是否发生异常都执行
  • 不执行的唯一情况
image

声明异常(throws)

throws声明某个方法可能抛出的各种异样,多个异常用逗号隔开。

抛出异常(throw)

除了系统自动抛出异常外,有些问题需要程序员自行抛出异常

throw throws
生成并抛出异常 声明方法内抛出了异常
位于方法体内,可作为单独语句使用 必须跟在方法参数列表后面,不能单独使用
抛出一个异常对象,且只能是一个 声明抛出异常类型,可以跟多个异常

自定义异常

当JDK中的异常类型不能满足程序的需要时,可以自定义异常类

使用自定义异常的步骤:

  1. 定义异常类(继承Throwable、继承Excepion或者RuntimeException)
  2. 编写构造方法,继承父类的实现
  3. 实例化自定义对象
  4. 使用throw抛出