检查异常 (Checked Exceptions) 和非检查异常 (Unchecked Exceptions)的区别?

在 Java 编程语言中,异常 (Exception) 是程序执行过程中可能出现的不正常情况。异常分为两类:检查异常 (Checked Exceptions) 和非检查异常 (Unchecked Exceptions)。它们的主要区别如下:

这里讲一个对应关系 检查异常 (Checked Exceptions)【非运行时异常】。非检查异常 (Unchecked Exceptions)【运行时异常】。

检查异常 (Checked Exceptions)【非运行时异常】

  1. 定义:检查异常是需要在编译时进行检查的异常。它们通常是可以预见并可以恢复的异常。
  2. 处理要求:编译器强制要求程序必须处理这些异常。处理方式包括使用 try-catch 块捕获异常,或者在方法签名中使用 throws 关键字声明异常。
  3. 常见示例:IOException、SQLException 等。
  4. 用途:用于表示程序外部条件的异常,例如文件未找到、网络错误等。

示例代码

import java.io.*;

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("nonexistentfile.txt"));
            String line = reader.readLine();
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

非检查异常 (Unchecked Exceptions)【运行时异常】

  1. 定义:非检查异常是指在编译时不进行检查的异常。它们通常是程序逻辑错误导致的异常,是程序员错误的结果。
  2. 处理要求:编译器不强制要求必须处理这些异常。程序员可以选择捕获处理,也可以忽略。
  3. 常见示例:RuntimeException 及其子类,例如 NullPointerException、ArrayIndexOutOfBoundsException 等。
  4. 用途:用于表示程序内部的逻辑错误或编程错误,例如空指针引用、数组越界等。

示例代码

public class UncheckedExceptionExample {
    public static void main(String[] args) {
        String str = null;
        try {
            System.out.println(str.length());
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
    }
}

关键区别

  1. 编译时检查

    • 检查异常:需要在编译时进行检查,必须明确处理。
    • 非检查异常:编译时不进行检查,可以选择处理或不处理。
  2. 异常的性质

    • 检查异常:通常是可以预见并恢复的异常,多与外部资源相关。
    • 非检查异常:通常是编程错误导致的异常,多与程序逻辑错误相关。
  3. 使用场景

    • 检查异常:适用于需要强制处理的外部异常情况。
    • 非检查异常:适用于程序内部逻辑错误,不强制处理。

通过了解和区分检查异常与非检查异常,可以更好地编写健壮的 Java 程序,处理潜在的异常情况。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值