java基础详细笔记之异常处理

Java基础详细笔记之异常处理

在Java编程中,程序出现异常是经常发生的事情。如果程序出现异常而未被妥善处理,那么程序将会崩溃,导致应用程序无法继续运行。所以Java提供了异常机制,它允许我们在程序中去处理异常情况,从而使得程序可以正常地继续执行。

异常的分类

Java中将异常分为两类:

  1. 可查异常,如IO异常、SQL异常等。它们必须在程序中进行处理,否则编译器会报错。
  2. 运行时异常,如NullPointerException、ArrayIndexOutOfBoundsException等。它们在程序执行时才会出现问题,可以选择在程序中处理,也可以不处理,编译器不会报错。

如何处理异常

Java提供了两种机制来处理异常:

  1. try-catch-finally语句块:我们可以使用try语句块来将一段可能发生异常的代码包裹起来,然后通过catch块来实现异常的捕捉和处理,最后通过finally块来执行一些清理工作。
  2. throws关键字:我们可以使用throws关键字来将可能发生异常的方法抛给上层的调用者进行处理。

下面我们通过示例来详细说明这两种机制的用法。

使用try-catch-finally语句块处理异常

示例一:除数为零导致的算术异常

public static void main(String[] args) {
    int dividend = 10;
    int divisor = 0;
    try {
        int result = dividend / divisor;
    } catch (ArithmeticException e) {
        System.out.println("除数不能为零!" + e.getMessage());
    } finally {
        System.out.println("程序执行完毕!");
    }
}

以上代码中,在try语句块中执行了一段可能会引发算术异常的代码。如果出现了算术异常,那么就会进入catch块中进行处理,并输出错误信息。无论是否有异常发生,finally块中的代码都会被执行到。

示例二:文件不存在导致的IO异常

public static void main(String[] args) {
    File file = new File("D:/test.txt");
    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader(file));
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (FileNotFoundException e) {
        System.out.println("文件不存在!" + e.getMessage());
    } catch (IOException e) {
        System.out.println("读取文件发生错误!" + e.getMessage());
    } finally {
        try {
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("程序执行完毕!");
    }
}

以上代码中,我们通过try-catch-finally语句块来处理可能发生的文件不存在和读取文件错误的异常。在try语句块中,我们使用BufferedReader来读取文件中的数据。如果文件不存在,那么就会进入FileNotFoundException的catch块中进行处理;如果读取文件发生错误,那么就会进入IOException的catch块中进行处理。在finally块中,我们对BufferedReader进行close操作,无论是否发生异常都会执行到。

使用throws关键字处理异常

示例三:方法抛出IOException异常给上层调用者处理

public void readFromFile(String fileName) throws IOException {
    File file = new File(fileName);
    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader(file));
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } finally {
        br.close();
    }
}

以上代码中,readFromFile方法可能读取文件发生错误,因此我们将可能发生的IO异常抛给上层调用者去处理。在方法定义中,我们使用了throws关键字,表示该方法可能会抛出IOException异常。调用这个方法时,需要进行异常处理。

示例四:上层调用者处理readFromFile方法抛出的异常

public static void main(String[] args) {
    try {
        readFromFile("D:/test.txt");
    } catch (IOException e) {
        System.out.println("读取文件发生错误!" + e.getMessage());
    }
    System.out.println("程序执行完毕!");
}

以上代码中,我们在main方法中调用了readFromFile方法,并且使用try-catch语句块来处理方法抛出的可能发生的IO异常。

以上就是Java基础详细笔记之异常处理的完整攻略,包括异常的分类、如何处理异常、以及使用try-catch-finally语句块和throws关键字的示例。希望能对大家有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java基础详细笔记之异常处理 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 基于JavaCore文件的深入分析

    基于JavaCore文件的深入分析攻略 1. 确定JavaCore文件 JavaCore文件是JVM在遇到严重错误时生成的一种二进制文件,记录了JVM在运行时栈、堆、方法、线程等状态的信息。要深入分析JavaCore文件,首先需要确定要分析的JavaCore文件。 2. 安装Java SE开发工具箱 Java SE开发工具箱(JDK)提供了jstack和jm…

    Java 2023年5月19日
    00
  • 送电子书福利啦!

    过去若干年,一边工作编程,一边思考提炼,写了一些关于“写整洁业务代码”的文章,在随笔分类“代码修行”下。有一天在公司文档空间分享时,突然想到:可以制作一本电子书,将过往的重要经验总结起来,也是对自己十年编程生涯的一个阶段性回顾,作为继续前进的阶梯。 我的第一本电子书 书名:《代码修行:一步一步写出整洁的业务代码》 链接: https://pan.baidu.…

    Java 2023年5月7日
    00
  • java计算两个时间相差天数的方法汇总

    标题:Java计算两个时间相差天数的方法汇总 当我们需要计算两个日期之间相差的天数时,可以通过Java标准库提供的日期时间类来实现。下面将介绍Java计算两个时间相差天数的方法,包括两个示例。 方法一:使用Duration类 Java 8引入了Duration类,用于表示两个时间点之间的时间差,包括秒和纳秒。我们可以使用Duration.between()方…

    Java 2023年5月20日
    00
  • 入门java的第一步HelloWorld

    下面是“入门Java的第一步HelloWorld”的完整攻略: 步骤一:安装Java开发工具 在进行Java编程前,需要安装Java开发工具,例如Eclipse、NetBeans等。本文以Eclipse为例进行讲解。 Eclipse下载地址:https://www.eclipse.org/downloads/ 下载后双击exe文件进行安装,安装完成后启动Ec…

    Java 2023年5月19日
    00
  • 必须要学会的JMM与volatile

    下面我为你详细讲解必须要学会的JMM与volatile的完整攻略。 JMM介绍 JMM(Java Memory Model)即Java内存模型,用于规范Java程序中线程对共享变量的操作。JMM为Java程序中的线程提供可见性、有序性、原子性等保证,从而提高程序并发性能。 JMM提供的保证 可见性: 一个线程修改了共享变量的值,这个值的变化对其他线程是可见的…

    Java 2023年5月26日
    00
  • 垃圾回收的实现原理是什么?

    下面我就来详细讲解一下“垃圾回收的实现原理是什么?”的完整使用攻略。 垃圾回收的实现原理 垃圾回收是一种自动化内存管理的技术,它可以在程序运行时,自动回收不再被使用的内存,以避免内存泄漏和内存溢出等问题的发生。垃圾回收的实现原理主要分为以下几个步骤: 标记阶段:首先遍历整个堆内存,对每个对象进行标记,标记出那些是活对象,那些是死对象; 清除阶段:然后将所有死…

    Java 2023年5月11日
    00
  • java 判断两个对象是否为同一个对象实例代码

    判断两个对象是否为同一个对象实例,在Java中可以通过以下两种方式实现: 方法一:使用“==”运算符 在Java中,“==”运算符用于比较两个对象的内存地址是否相等,如果相等,则说明这两个对象是同一个实例,反之则不是。因此,我们可以使用该运算符判断是否两个对象是同一个实例。 下面是示例代码: public class ObjectDemo { public …

    Java 2023年5月26日
    00
  • Java IO及BufferedReader.readline()出现的Bug

    关于“Java IO及BufferedReader.readline()出现的Bug”,我们需要注意以下两点: 1. Java IO 中的缓存问题 Java的IO操作是基于缓存进行的,而很多读取函数如BufferedReader. readline()是以换行符作为结束标记的,但是我们在编写代码时常常忽略了特殊情况的处理,导致出现了缓存问题,例如一次读取操作…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部