一. 异常
1.1 概念
Java程序在运行时期发生的问题就是异常。
在Java中,把异常封装成了一个类。
当发生了某些问题时,系统会自动创建对应的异常对象并抛出该异常相关的信息。
1.2 异常的体系
- Throwable
- Error:用于指示合理的应用程序不应该试图捕获的严重问题
- Exception:它指出了合理的应用程序想要捕获的条件
- RuntimeException
- IndexOutOfBoundsException
- ...
- IOException
- FileNotFoundException
- ...
- ...
- RuntimeException
1.3 异常的处理
1.3.1 捕获
1.3.1.1 格式
try{
// 需要被检测的代码
}
catch(异常 对象){
//发生异常后才会执行,且是立即执行
// 处理异常的代码
}
finally{
// 一定会被执行的代码
// 一般用于释放资源
}
1.3.1.2 注意
1、如果有多个异常可能发生,需要将这些异常罗列在try代码块之后,用于进行针对性的异常处理
2、如果多个异常之间有包含关系,那么范围大的异常必须写在范围小的异常之后
3、只有使用对应的异常对象才能进行相应异常的捕获,否则是无效
1.3.2 抛出
关键字:throw、throws
throws:用于方法声明,声明该方法的方法体中可能存在异常,需要调用者进行处理
格式:
public 返回类型 方法名() throws 异常{
}
1、已经有了捕获处理异常,为什么要使用throws抛出?
因为方法可能出现异常,而异常的处理是各不相同的,不应该写死异常的处理方式,
应该告知调用者此方法存在异常,需要调用者根据它的情况进行异常的处理。
2、那么调用者该如何处理具有异常的方法?
两者:
第一种,继续抛出,直到有一个调用者进行了捕获
第二种,直接捕获,此时调用者就无需再进行抛出
throw:用于在语句中抛出异常对象,需要调用者在调用功能时进行捕获,
用此方法创建异常对象,可以借助异常类中构造函数的重载对错误信息进行设置。
格式:
throw new 异常对象(String);
注:
1.4 异常类的常用方法
1、toString():显示错误原因
2、getMessage():显示错误原因和相关异常类
3、printStackTrace():直接打印错误原因、相关异常类、错误位置
1.5 自定义异常类
概念:根据项目需求,针对某些特殊情况定义的异常类。
步骤:
1、创建类继承Exception
2、写出默认的构造函数、重载传参为String构造函数
3、在重载的构造函数中调用super(String)
4、在异常时抛出异常对象(throw)
5、在调用功功能时对该异常进行 捕获