Java中try catch处理异常示例

下面就是“Java中try catch处理异常示例”的详细讲解。

1. 什么是异常?

在Java程序运行过程中,可能会遇到一些非正常的情况,例如读取文件时文件不存在、网络连接异常等等,这些非正常的情况被称为“异常”。

Java中的异常是Throwable类及其子类的实例,可分为检查型异常和非检查型异常(也叫运行时异常)。其中,检查型异常必须显式处理,而非检查型异常则可以不处理。

2. try-catch语句

在Java中,可以使用try-catch语句来处理异常。try块中放置可能会抛出异常的代码,catch块中处理发生的异常。

try {
    // 可能会抛出异常的代码
} catch (Exception e) {
    // 异常处理逻辑
}

catch块中的Exception类型可以换成其它的异常类型,以处理特定的异常。

3. try-with-resources语句

在Java7中新增了try-with-resources语句,用于自动关闭资源,如文件、数据库连接等。在try块中打开资源,当try块执行完成或出现异常时,将自动关闭资源。

try (InputStream is = new FileInputStream(file)) {
    // 处理文件流
} catch (IOException e) {
    // 异常处理逻辑
}

4. 示例说明

下面通过两个示例说明try-catch语句的应用。

示例1:文件读取异常处理

代码如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReadDemo {
    public static void main(String[] args) {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("test.txt"));
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("文件读取错误:" + e.getMessage());
        } finally {
            try {
                if (br != null) {
                    br.close();
                }
            } catch (IOException e) {
                System.out.println("关闭文件流失败:" + e.getMessage());
            }
        }
    }
}

上述代码中,使用BufferedReader读取文件内容,若出现异常,则捕获异常并输出异常信息。最后在finally块中关闭文件流。

示例2:数据库连接异常处理

代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBQueryDemo {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
            ps = conn.prepareStatement("select * from user");
            rs = ps.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
        } catch (ClassNotFoundException e) {
            System.out.println("找不到数据库驱动类:" + e.getMessage());
        } catch (SQLException e) {
            System.out.println("数据库操作异常:" + e.getMessage());
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (ps != null) {
                    ps.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                System.out.println("关闭数据库连接失败:" + e.getMessage());
            }
        }
    }
}

上述代码中,连接MySQL数据库,若出现异常,则捕获异常并输出异常信息。最后在finally块中关闭数据库连接、Statement和ResultSet等资源。

以上就是Java中try catch处理异常示例的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中try catch处理异常示例 - Python技术站

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

相关文章

  • 教你一步到位部署运行MyBatis3源码(保姆级)

    教你一步到位部署运行MyBatis3源码(保姆级) 前言 MyBatis 是一个开源的免费的 Java 持久层框架,它利用简单的 XML 或注解代码来配置和映射数据库操作。 在实际的开发中,我们经常会直接使用 MyBatis 这个框架来进行数据库的操作,但有时候会需要修改或者扩展 MyBatis3 的源码来满足自己的需求,那么这时候就需要我们先将 MyBat…

    Java 2023年5月20日
    00
  • 使用Spring Data R2DBC +Postgres实现增删改查功能

    使用Spring Data R2DBC + Postgres实现增删改查功能,需要完成以下步骤: 添加依赖项 在pom.xml文件中添加以下依赖项: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-…

    Java 2023年5月20日
    00
  • Mybatis动态sql超详细讲解

    为了更好地说明“Mybatis动态sql超详细讲解”的相关内容,本次攻略将分以下几个方面进行讲解: 动态SQL简介 Mybatis动态SQL语句的使用 Mybatis动态SQL语句的实例解析 Mybatis动态SQL语句实例二 动态SQL简介 在实际开发中,SQL语句的执行往往需要根据不同的条件进行动态调整,这就是动态SQL的概念。动态SQL主要包括两种形式…

    Java 2023年5月19日
    00
  • java虚拟机学习笔记进阶篇

    Java虚拟机学习笔记进阶篇攻略 本文旨在为读者提供Java虚拟机学习笔记进阶篇的学习攻略,包括必要的准备知识、学习方法、学习重点等内容。 准备知识 在学习Java虚拟机进阶篇之前,需要对Java虚拟机的基础知识有清晰的理解,包括但不限于: Java虚拟机的体系结构和工作原理; Java虚拟机的内存模型和内存管理机制; Java字节码的结构、格式和指令集; …

    Java 2023年5月23日
    00
  • java 实现下压栈的操作(能动态调整数组大小)

    实现下压栈的操作是实现栈数据结构的一种方式,下面是如何用Java实现这种操作,同时可以动态调整数组大小。 实现步骤 定义一个类来存储栈的操作。 在该类中创建一个数组来存储栈的元素。 创建一个变量来存储栈中元素的数量。 实现一个方法push(),将元素压入栈中。如果数组已满,则将数组的大小扩大一倍。将新元素添加到数组的结尾。 实现一个方法pop(),将栈顶元素…

    Java 2023年5月26日
    00
  • struts2+jsp实现文件上传的方法

    下面我来为您详细讲解一下 “Struts2 + JSP 实现文件上传的方法” 的完整攻略。 1. 环境搭建 首先,需要准备好以下开发环境:- Eclipse IDE- Tomcat 服务器- Struts2 框架 2. 添加 Struts2 依赖库 在 Eclipse 中创建一个新的 Web 项目,并在项目的 build path 中添加 Struts2 的…

    Java 2023年5月20日
    00
  • 关于解决iframe标签嵌套问题的解决方法

    关于解决 iframe 标签嵌套问题的解决方法(完整攻略) 问题概述 在使用 iframe 标签嵌套时,可能会遇到以下一些问题: 嵌套多层 iframe 会导致网页加载速度变慢; 在 iframe 中进行跨域请求时,可能会受到浏览器安全策略的限制; iframe 内容与外部网页内容的样式、布局等问题。 本攻略主要介绍如何解决 iframe 标签嵌套问题。 解…

    Java 2023年6月15日
    00
  • java如何让带T的时间格式化

    下面是关于 Java 如何让带 T 的时间格式化的完整攻略。 1. 问题背景 在一些时间格式化场景中,我们常常会见到带 T 的时间格式,例如 2022-07-01T13:45:30+08:00。这种时间格式带有时区信息,是 ISO 8601 标准中定义的格式。但是,Java 默认的日期时间格式化器并不支持这种格式的时间格式化,因此我们需要进行一些额外的操作来…

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