个人主页:【😊个人主页】
系列专栏:【❤️初识JAVA】
文章目录
- 前言
- 异常方法(Throwable类)
- Throwable类的方法
- 捕获异常
- 多重捕获块
前言
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误00有时候是可以避免的,学习一些异常处理方式往往可以使我们编程的时间大大减少。
注:本文为系列文章,前文可点击观看➡️【JAVA】我们该如何规避代码中可能出现的错误?(一)
异常方法(Throwable类)
Java中的Throwable类是所有错误或异常的父类,它有两个子类:Exception和Error。Exception表示程序可以处理的异常,而Error表示程序无法处理的错误。
Throwable类定义了许多方法来获取异常信息,例如getMessage()方法可以获取异常的描述信息,getStackTrace()方法可以获取异常发生时调用堆栈中的信息,toString()方法可以将异常转换为字符串。子类可以根据需要覆盖这些方法来提供特定的异常信息。
通常情况下,在Java程序中抛出异常时,可以使用try-catch语句捕获异常并进行处理。如果没有处理异常,程序将会终止并输出异常信息。当然也可以使用throws关键字将异常抛给上层调用者处理。
Throwable类的方法
public String getMessage()
返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了。
public Throwable getCause()
返回一个 Throwable 对象代表异常原因。
public String toString()
返回此 Throwable 的简短描述。
public void printStackTrace()
将此 Throwable 及其回溯打印到标准错误流。。
public StackTraceElement [] getStackTrace()
返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。
public Throwable fillInStackTrace()
用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中。
捕获异常
try
{// 程序代码
}catch(ExceptionName e1)
{//Catch 块
}
在Java中,捕获异常是通过try-catch语句块实现的。try语句块中包含可能抛出异常的代码,catch语句块中处理异常。如果try语句块中的代码抛出异常,则会尝试寻找与异常类型匹配的catch语句块来处理异常。在catch语句块中,可以使用异常对象的信息来执行任何必要的操作,例如输出错误消息、记录日志或恢复程序执行。
try {// 可能抛出异常的代码int x = 10/0; // 除以0将会抛出一个ArithmeticException异常
} catch (ArithmeticException e) {// 处理异常System.out.println("发生异常:" + e.getMessage());e.printStackTrace();
}
在上面的例子中,当执行10/0操作时,将会抛出一个ArithmeticException异常。catch语句块中的代码将处理该异常,输出错误消息并打印异常堆栈跟踪信息。
多重捕获块
一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。
多重捕获块的语法如下所示:
try{// 程序代码
}catch(异常类型1 异常的变量名1){// 程序代码
}catch(异常类型2 异常的变量名2){// 程序代码
}catch(异常类型3 异常的变量名3){// 程序代码
}
上面的代码段包含了 3 个 catch块。
可以在 try 语句后面添加任意数量的 catch 块。
如果保护代码中发生异常,异常被抛给第一个 catch 块。
如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
如果不匹配,它会被传递给第二个 catch 块。
如此,直到异常被捕获或者通过所有的 catch 块。