异常:代表程序出现的错误。
Exception 包括编译时异常和运行时异常,通常用Exception及其子类来封装程序的问题。
异常的作用:
1)用来查询bug的关键信息。
2)作为方法内部的一种特殊放回方式,告诉调用者底层调用情况。
异常的处理:
1)交给JVM处理 :
虚拟机以红字的形式将错误信息输出在控制台上,并且停止运行。下面的代码不在运行。
2)自己处理(捕获异常)目的:代码出现异常后,程序可以继续向下运行
try{
}catch( 异常类 变量名){
}
有四个关键点:
- 如果try中没有异常,皆大欢喜,继续向下执行。
- 如果try中有多个问题,就按顺序向下执行,
- 如果try中的异常在catch中么有,就报错,并停止运行。
- 如果try中遇到问题,try剩下的代码不在执行。
3)抛出异常
异常中的常用方法:
public String getMessage 返回throwable的详细消息字符串。
public String toString 返回简短的抛出说明
public void printStockTrace 将一场信息输出在控制台上
抛出异常
throws 写作方法定义处,声明异常。
告诉调用者,此方法可能出现那些异常。编译时异常必写,运行时异常可不写
throw 写在方法体里面,结束方法
手动抛出异常对象交给调用者
自定义异常
定义异常类,写继承关系,空参构造,带参构造 都不可少。
在Java中,可以通过自定义异常类来处理特定的业务逻辑异常。自定义异常类通常继承自Exception
(编译时异常)或RuntimeException
(运行时异常)。
public class CustomException extends Exception {
// 无参构造方法
public CustomException() {
super();
}
// 带有详细信息的构造方法
public CustomException(String message) {
super(message);
}
// 带有详细信息和原因的构造方法
public CustomException(String message, Throwable cause) {
super(message, cause);
}
}
这是一个最基本的自定义异常类,可以通过不同的构造方法传递不同的信息。你还可以在自定义异常类中添加其他方法或属性,以满足你的业务需求。
使用自定义异常的示例:
public class CustomExceptionExample {
public static void main(String[] args) {
try {
// 模拟业务逻辑,抛出自定义异常
processBusinessLogic();
} catch (CustomException e) {
// 捕获自定义异常并处理
System.out.println("Caught custom exception: " + e.getMessage());
}
}
public static void processBusinessLogic() throws CustomException {
// 模拟业务逻辑中发生异常的情况
boolean errorCondition = true;
if (errorCondition) {
// 抛出自定义异常
throw new CustomException("An error occurred in business logic.");
}
}
}
processBusinessLogic
方法模拟了一个业务逻辑,并且当满足某个条件时抛出了自定义异常。在 main
方法中,我们捕获了这个异常并进行处理。
通过自定义异常,你可以更好地组织和管理你的异常情况,并提供更有针对性的错误信息,以便更容易地诊断和调试代码。