java异常处理机制(二)之异常处理与捕获

前言

本文介绍了什么是异常,异常的分类,异常的处理。

异常概述

1 Error(错误):
是指程序无法处理的错误,表示运行应用程序时比较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。
2 异常(Exception):
是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。通俗的说,就是程序员写的代码错误。
两者的区别:错误无法处理,异常可以被程序本身处理。
在这里插入图片描述

异常分类

异常可以分为编译时异常和运行时异常两种类型。

编译时异常:都是Exception类及其子类,必须显式(手动处理),否则程序就会发生错误,无法通过编译。

运行时异常:都是RuntimeException类及其子类,无需显式处理(手动处理),也可以和编译时异常一样处理。

常见的运行时异常:

    NullPointerException 空指针异常
    ArithmeticException 数学运算异常
    ArrayIndexOutOfBoundsException 数组下标越界异常
    ClassCastException 类型转换异常
    NumberFormatException 数字格式不正确异常

常见的编译异常:

    SQLException 操作数据库时,查询表可能发生异常
    IOException 操作文件时发生的异常
    FileNotFoundException 当操作一个不存在的文件时,发生异常
    ClassNotFoundException 加载类,但是该类不存在时,发生异常
    EOFException 操作文件,到文件末尾,发生异常
    IllegalArguementException 非法参数异常

异常的处理

异常捕获指在程序运行过程中,发生了一些不可预测的错误或异常,需要对这些错误或异常进行捕获和处理的过程。在编程中,我们可以使用 try-catch-finally 语句块来进行异常捕获。

  • try:将可能会出错的代码放入 try 块中。
  • catch:当 try 块中的代码出现异常时,程序会跳转到 catch 块去处理异常,防止程序崩溃。
  • finally:不管 try 块中的代码是否正常执行,finally 块中的代码都会被执行,通常用来释放资源。

以下是一个简单的异常处理和捕获的例子:

try {
    // 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {
    // 处理特定类型的异常1
} catch (ExceptionType2 e2) {
    // 处理特定类型的异常2
} finally {
    // 必须执行的代码块
}

在上面的代码中,try块中的代码可能会抛出异常。如果抛出了ExceptionType1类型的异常,将跳转到第一个catch块中处理它。如果抛出了ExceptionType2类型的异常,将跳转到第二个catch块中处理它。无论是否出现异常,finally块中的代码都将执行。

需要注意的是,在Java中,异常处理应该尽可能地处理所有可能的异常,并且应该总是使用try-catch-finally块,即使代码中出现了Unchecked Exception。这样可以确保程序的稳定性和可靠性。

总结

  1. 如果try语句块中有return语句(finally语句块中没有),返回的是try语句块中的变量值。执行过程大致如下:

    • 若try语句块中有返回值,先把返回值保存到局部变量中(可以理解为打了断点进行标记);
    • 执行jsr指令跳到finally语句中执行;
    • 执行完finally语句块后,返回之前保存在局部变量中的值(可以理解为回到标记的断点处)。
  2. 若try语句块、finally语句块中都有return语句,则忽略try的return,而使用finally的return。

  3. 从1、2我们也看出,finally语句块中的语句是一定要执行的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值