Java异常入门

本文介绍了Java中的异常处理,包括异常的定义、类型(受检异常和非受检异常)、Error与Exception的区别,以及try-catch-finally语句的使用。强调了异常处理在保护程序健壮性和防止不可预见结果中的关键作用。
摘要由CSDN通过智能技术生成

 

目录

前言

异常

什么是异常

异常(Exception)和错误(Error)

异常的处理

异常的作用


前言

我们用一个简单情形引入异常:

class Devide{
    public int divide(int a ,int b ){
        return a / b ;
    }
}

public class Main{
    public static void main(String[] args){
        Devide divide = new Devide();
        divide.divide(1 ,0) ;
    }
}

我们假设有这样一段代码,显然,这段代码是有错误的,因为我们使得除数为0,假使运行,我们将得到以下结果:

可以看到,编译器给我们报了 ArithmeticException(算数异常),中断了程序,并告诉我们是由除0引起的,这就是一个最简单的异常。

异常

什么是异常

Java 异常是在程序执行过程中发生的意外情况,它们可以中断正常的程序流程,并提供了一种机制来处理这些意外情况。异常通常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)

  1. 受检异常(Checked Exception)

    • 受检异常是指在编译时被检查的异常,即在代码中必须显式地捕获或声明抛出以避免编译错误。
    • 典型的受检异常包括 I/O 异常(如文件不存在或读写失败)、SQL 异常(如数据库连接错误或查询错误)等。
    • 受检异常通常是可以恢复的,并且程序应该有相应的处理机制来解决这些异常。
  2. 非受检异常(Unchecked Exception)

    • 非受检异常是指在运行时发生的异常,不需要在代码中显式地捕获或声明抛出。
    • 典型的非受检异常包括空指针异常(NullPointerException)、数组越界异常(ArrayIndexOutOfBoundsException)、类型转换异常(ClassCastException)等。
    • 非受检异常通常是由编程错误引起的,比如访问 null 对象的属性或方法、数组访问越界等。

在 Java 中,所有异常都是 Throwable 类的子类。Throwable 类有两个主要的子类:Exception 和 Error。

异常(Exception)和错误(Error)

  • Exception:Exception 是程序正常运行中可以预料到的意外情况所引发的异常的超类。它又分为受检异常和非受检异常两种。

  • Error:Error 是指程序无法处理的系统错误或资源耗尽等严重问题所引发的异常。与一般的异常不同,Error 通常发生在 JVM 或底层系统中,无法通过代码来解决。

简要的理解,异常往往指的是得到的结果和预期不一致,会中断程序的运行,但其实不代表程序就不能够向下运行了。而错误一旦发生,程序就连运行都做不到了。

异常的处理

Java 提供了一套异常处理机制,通过 try-catch-finally 语句来捕获和处理异常。一个典型的异常处理代码结构如下:

try {
    // 可能会抛出异常的代码
    // 比如可能发生除以零的操作、访问 null 对象等
} catch (ExceptionType1 e1) {
    // 处理 ExceptionType1 类型的异常
} catch (ExceptionType2 e2) {
    // 处理 ExceptionType2 类型的异常
} finally {
    // 无论是否发生异常,都会执行的代码块
    // 通常用来释放资源等清理工作
}

在 try 代码块中,放置可能会引发异常的代码;catch 代码块用来捕获和处理特定类型的异常;finally 代码块中的代码无论是否发生异常都会被执行,通常用来进行资源的释放或清理工作。

除了 try-catch-finally 语句外,还可以使用 throws 关键字来声明方法可能抛出的异常,从而将异常的处理责任交给调用者。

异常的作用

异常机制的最重要作用就是“保护”,我们说,出现异常并不是说程序就完全不能运行了,而是得不到预期的结果。但Java的工程师们为什么要在异常发生时强行中断程序呢?试想刚刚的例子,一个数除以0交给系统去运算,不清楚到底会得到一个什么样的值,如果这时不中断程序,而是继续运行,那之后要是用到了这个值呢?后果是不堪设想的,所以Java的异常机制就是在保护我们程序的健壮性。

本篇博文到此就结束了,新手上路,水平有限,如有错误,还望海涵并指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eternal*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值