JAVA异常

1、异常与错误

在程序运行过程中出现轻微问题不会使程序终止的叫做异常,程序员可以使用一些方法来处理这些问题。在运行过程中,有方法应对

在程序运行过程中出现巨大问题对程序进行终止的叫做错误,错误是无法捕获的,是无法处理的

2、异常类层级关系

ExceptionError有共同的父类Throwable

3、Exception又可以分为检查性异常和非检查性异常

3.1、检查性异常

检查性异常(Checked Exceptions)是Java中一种特殊的异常类型,它们是编译时检查的异常。这意味着在编译阶段,编译器会检查代码中是否有适当的异常处理机制(例如,通过try-catch块捕获异常或在方法签名中声明抛出异常)。

3.2、常见的检查性异常

  1. IOException:这是所有I/O操作相关异常的超类,例如在文件读写、网络通信等操作中可能会遇到。

  2. SQLException:专门用于数据库操作的异常,如执行SQL语句时出现错误。

  3. FileNotFoundException:当尝试访问或打开一个不存在的文件时抛出。

  4. MalformedURLException:当尝试创建一个URL对象,但提供的URL字符串格式不正确时抛出。

  5. ClassNotFoundException:当尝试加载一个类,但该类在类路径中找不到时抛出。

  6. InstantiationException:当尝试通过反射创建一个实例,但类无法被实例化时抛出,例如类没有无参构造函数。

public void readFile(String path) throws IOException {
    try {
        FileReader reader = new FileReader(path);
        // 执行文件读取操作
    } catch (FileNotFoundException e) {
        System.out.println("文件未找到: " + e.getMessage());
        throw e; // 可以选择重新抛出异常,让调用者处理
    }
}

3.3、非检查性异常

检查性异常(Unchecked Exceptions)是Java中不需要在方法签名中显式声明或捕获处理的异常。它们通常是由于编程错误导致的,比如逻辑错误或运行时错误

3.4、常见的非检查性异常:

  • NullPointerException:当尝试访问或操作一个空对象的成员时抛出。
  • ArrayIndexOutOfBoundsException:当尝试访问数组的非法索引时抛出。
  • ArithmeticException:当发生算术错误时抛出,例如除以零。
  • IllegalArgumentException:当方法被传递了不合法或不适当的参数时抛出。
  • IllegalStateException:当对象的状态不满足请求的操作时抛出。
  • ConcurrentModificationException:当集合被并发修改时抛出,通常在使用迭代器时遇到。

4、异常处理方式

在Java编程中,异常处理是确保程序稳定性和可靠性的重要手段。通过异常处理,开发者可以在程序运行时捕获并响应错误情况,避免程序异常终止。

在Java中,处理异常的方法主要有以下几种:

4.1、捕获异常(Try-Catch Block)

使用try块来包围可能会抛出异常的代码。如果在try块中抛出了异常,程序将不会崩溃,而是跳转到相应的catch块中进行处理。finally块中的代码无论是否抛出异常都会执行,通常用于执行清理工作,如关闭文件流或数据库连接。

try {
    // 可能会抛出异常的代码
} catch (IOException e) {
    // 处理IOException
} catch (SQLException e) {
    // 处理SQLException
} finally {
    // 无论是否抛出异常,都会执行的代码
}

4.2、声明抛出异常(Throws Clause)

在方法签名中使用throws关键字声明该方法可能会抛出的异常。这将异常的处理责任传递给方法的调用者

public void readFile(String path) throws IOException {
    // 可能会抛出IOException的代码
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值