java异常

什么是异常

异常是程序运行过程中出现的错误情况,它通过创建异常对象来中断当前的程序执行路径,并将控制权交给异常处理机制

异常在Java中是以对象的形式表示的,这些对象是从java.lang.Throwable类或其子类派生而来。Throwable是异常类层次结构的根类,它有两个主要的子类:java.lang.Exception和java.lang.Error。

Exception(异常):java.lang.Exception是表示可检查异常的基类。可检查异常是指在编译时需要显式处理的异常。Exception类及其子类用于表示程序运行过程中可能出现的外部条件、错误或其他可恢复的情况。例如,文件未找到、网络连接中断、输入格式错误等。开发人员需要通过捕获或声明这些异常来确保在程序中进行适当的异常处理。

Error(错误):java.lang.Error是表示严重问题或系统级错误的基类。错误是指那些程序通常无法处理或恢复的情况,例如内存溢出、堆栈溢出、虚拟机错误等。与异常不同,错误不需要在程序中显式处理,因为它们通常表示了无法解决的问题。

  1. 异常的基本处理结构:

try {

// 可能会抛出异常的代码

} catch (ExceptionType1 id1) {

// 处理ExceptionType1的代码

} catch (ExceptionType2 id2) {

// 处理ExceptionType2的代码

} finally {

// 无论是否发生异常,都将执行的代码

}

自定义异常

public class MyException extends Exception {

public MyException(String message) {

super(message);

}

}

使用:

throw new MyException("My custom message");

检查型异常(Checked Exceptions):

需要被显式捕获和处理的异常,比如IOException

运行时异常(RuntimeExceptions):

不需要显式捕获处理的异常,比如NullPointerExceptionIndexOutOfBoundsException

Throwable类的常用方法:

  • String getMessage():返回异常发生时的详细描述。

  • String toString():返回异常发生时的简短描述。

  • void printStackTrace():打印异常对象的堆栈跟踪信息到标准错误流。:

异常链

catch块中可以重新抛出异常,并附加原因信息。

catch (ExceptionType id) {

throw new ExceptionType(id.getMessage() + " with extra info");

}

finally块的使用:

通常在finally块中进行资源清理,如关闭文件、释放数据库连接等。

异常的处理流程
异常的处理流程可以概括为以下几个步骤:

执行可能引发异常的代码块。这部分代码通常被包裹在try块中。

当在try块中发生异常时,程序会立即跳转到与异常类型匹配的catch块。catch块用于捕获和处理特定类型的异常。

在匹配的catch块中,根据异常的类型执行相应的操作,例如输出错误消息、记录日志或采取其他处理措施。多个catch块可以按照顺序排列,以处理不同类型的异常。

如果没有匹配的catch块或异常在catch块中未被处理,异常将被传递给上一级调用栈,继续寻找异常处理代码。

如果在当前方法中没有合适的异常处理代码,异常将继续向上层调用栈传递,直到找到能够处理异常的地方。

如果在调用栈中找到能够处理异常的catch块,相应的异常处理代码将被执行。

在异常处理完成后,程序将继续执行try-catch结构之后的代码。

如果存在finally代码块,不论异常是否发生,finally中的代码都会被执行。finally代码块通常用于释放资源、进行清理操作或确保一些必要的代码逻辑得以执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值