JAVA中异常体系总结

一、异常体系总体结构

所有异常的父类都是Exception;

但凡是异常对象,无论原因,都可以被抛出。

二、异常分类

(一)、Error(错误)

特点:严重问题,应用程序通常无法处理;由JVM(JAVA虚拟机)产生和抛出

常见子类:

  • VirtualMachineError(虚拟机错误)

  • OutOfMemoryError(内存溢出)

  • StackOverflowError(栈溢出)

  • NoClassDefFoundError(类定义未找到)

(二)、 Exception(异常)

(1) RuntimeException(运行时异常/非受检异常)

特点:由程序逻辑产生的异常,不强制捕获

常见子类:

  • NullPointerException(空指针)

  • ArrayIndexOutOfBoundsException(数组越界)

  • ClassCastException(类型转换异常)

  • IllegalArgumentException(非法参数)

  • ArithmeticException(算术异常)

(2) 非RuntimeException(受检异常)

特点:必须捕获或声明抛出;从语法角度上必须解决的异常,如果不解决就无法编译通过

常见子类:

  • IOException(IO异常)

  • SQLException(SQL异常)

  • FileNotFoundException(文件未找到)

  • ClassNotFoundException(类未找到)

  • InterruptedException(线程中断)

三、异常处理机制

(一)、try-catch-finally 结构

当抛出一个异常时,可以在try-catch 块中捕获和处理它;

try语句块中:放的是可能出现问题的代码;

catch语句块中:放的是出现问题并捕获后,处理问题的代码code;如果问题在try语句块中没有出现 则catch中不会运行。

finally语句块中:放的是不管问题异常是否产生 都要执行的代码code。

 

(二)、throws声明

在 Java 中,当前执行的语句必属于某个方法。Java 解释器调用 main 方法开始执行一个程序。每个方法都必须声明它可能抛出的必检异常的类型。这称为声明异常( declaring exception)。只对编译时异常进行声明,告知方法的调用者有异常。

public void method() throws IOException, SQLException {
    // 方法代码
}

(三)、throws抛出异常

 检测到错误的程序可以创建一个合适的异常类型的实例并抛出它,这就称为抛出一个异常。

throw new ExceptionType("错误信息");

 声明异常的关楗字是 throws, 抛出异常的关键字是 throw。

 四、异常处理实践

1、异常捕获原则:

  • 具体异常优先于通用异常

  • 不要捕获Throwable/Error

  • 不要忽略捕获的异常(空catch块)

2、异常使用原则

  • 对可恢复情况使用受检异常

  • 对编程错误使用运行时异常

  • 避免在循环中使用try-catch

 3、自定义异常

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

 4、异常链

try {
    // 代码
} catch (Exception e) {
    throw new MyException("新异常信息", e); // 传递原始异常
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值