Java中有哪些类型的异常?

Java中异常的类型可以分为两类:检查性异常(Checked Exception)和非检查性异常(Unchecked Exception)。

检查性异常(Checked Exception)

检查性异常是指在编译阶段进行检查的异常,如果程序中出现了这些异常,编译器会提示你必须处理该异常。这些异常通常属于外部环境引起的异常,比如I/O异常、SQL异常等。

Java中常见的检查性异常包括:

IOException

它是Java中最常见的检查性异常之一,可以是在文件读写操作中发生,也可以在网络连接等操作时发生。

下面的示例代码展示了如何处理IOException:

import java.io.*;

public class FileReadDemo {

    public static void main(String[] args) {
        try {
            File file = new File("path/to/file.txt");
            BufferedReader br = new BufferedReader(new FileReader(file));
            String st;
            while ((st = br.readLine()) != null)
                System.out.println(st);
        }
        catch (IOException e) {
            System.out.println("Exception caught: " + e);
        }
    }

}

SQLException

SQLException是在连接数据库或操作数据库时可能发生的异常。

下面的示例代码展示了如何处理SQLException:

import java.sql.*;

public class DBConnectDemo {

    public static void main(String[] args) {

        Connection conn = null;
        Statement stmt = null;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/test?useSSL=false", "user", "password");
            stmt = conn.createStatement();
            String sql = "SELECT * FROM users";
            ResultSet rs = stmt.executeQuery(sql);
            while(rs.next()) {
                System.out.println(rs.getInt("id") + "\t" + rs.getString("name") + "\t" + rs.getString("email"));
            }
        }
        catch (SQLException e) {
            System.out.println("Exception caught: " + e);
        }
        catch (ClassNotFoundException e) {
            System.out.println("Exception caught: " + e);
        }
        finally {
            try{
                if(stmt!=null)
                    conn.close();
            }
            catch(SQLException se){
            }
            try{
                if(conn!=null)
                    conn.close();
            }
            catch(SQLException se){
                se.printStackTrace();
            }
        }
    }
}

非检查性异常(Unchecked Exception)

非检查性异常也叫做运行时异常,它通常指的是程序本身的错误,如空指针异常、数组下标越界异常等。

Java中常见的非检查性异常包括:

NullPointerException

当一个对象引用为 null,而你尝试调用该对象上的方法时,就会抛出 NullPointerException 异常。

String str = null;
System.out.println(str.substring(0, 1)); //throws NullPointerException

ArrayIndexOutOfBoundsException

当数组访问时索引超出范围时,将会抛出 ArrayIndexOutOfBoundsException 异常:

int[] arr = new int[5];
System.out.println(arr[5]); //throws ArrayIndexOutOfBoundsException

总的来说,Java中异常的类型非常多,开发者在编写代码的过程中需要了解不同类型的异常、产生异常的场景以及如何处理异常。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中有哪些类型的异常? - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • spring kafka框架中@KafkaListener 注解解读和使用案例

    下面就让我来详细讲解一下Spring Kafka框架中@KafkaListener注解的使用。 1. @KafkaListener注解介绍 @KafkaListener注解是Spring Kafka框架中用于消费Kafka消息的注解,用于标注一个或多个方法,使它们成为Kafka消息监听器。@KafkaListener注解可以用于类和方法上,用于类上时,需要配…

    Java 2023年5月20日
    00
  • 初识通用数据库操作类——前端easyui-datagrid,form(php)

    初识通用数据库操作类是一篇介绍如何使用easyui-datagrid和easyui-form来进行数据库操作的文章,涉及到的技术有PHP、jQuery、easyui等。 准备工作 在使用easyui-datagrid和easyui-form之前,需要先导入相关的js和css文件以及jQuery库。在此基础上,还需要创建数据库和相应的表格。本篇攻略将以mysq…

    Java 2023年6月15日
    00
  • java实现简单的小超市程序

    Java实现简单的小超市程序攻略 需求分析 在实现小超市程序之前,我们需要了解程序的需求。假设我们需要实现以下功能: 商品信息的录入和展示 商品的购买和结算 支持会员折扣和促销活动 设计思路 在了解需求之后,我们再来规划一下小超市程序的设计思路。 商品实体类 首先我们需要设计一个商品的实体类,包括商品名称、单价、库存、条形码等属性。 超市类 我们还需要设计一…

    Java 2023年5月18日
    00
  • MyBatis 执行动态 SQL语句详解

    MyBatis 执行动态 SQL语句详解 什么是动态 SQL语句 动态SQL语句是根据不同的输入条件,动态创建不同的SQL语句,以便能够灵活地满足不同的查询需求。 MyBatis如何执行动态 SQL语句 MyBatis执行动态SQL语句的方式是通过将动态SQL语句解析成对应的静态SQL语句,然后再执行静态SQL语句。 这个过程MyBatis通过SqlNode…

    Java 2023年5月20日
    00
  • java el简介及用法

    Java EL 简介及用法 Java Expression Language(Java EL)是用于在Java Web应用程序中计算表达式的语言。Java EL 可以在页面中引用或调用Java Bean中的属性、方法等,并能在JSP、JSF、Struts、Spring等框架中使用。 语法 Java EL 对象名称可以分为两部分:对象名称和对象属性。对象名称是…

    Java 2023年6月15日
    00
  • SpringBoot2零基础到精通之profile功能与自定义starter

    SpringBoot2零基础到精通之profile功能与自定义starter 本文将详细讲解SpringBoot2中的profile功能和自定义starter,在文章中会通过两个实例来演示,帮助读者更好地理解。 profile功能 什么是profile Profile是SpringBoot提供的一个在不同环境下使用不同配置的功能。比如在开发环境中使用开发配置…

    Java 2023年5月19日
    00
  • Java 常量字符串过长的解决方法

    Java 常量字符串过长的解决方法主要包括以下两种方式: 1. 使用换行符 Java中可以使用换行符\将一行代码分成多行,这也适用于字符串常量。可以在字符串过长的地方使用\将字符串分割成多行,从而解决字符串过长的问题。 示例代码: String str = "这是一个非常长的字符串,我们可以在适当的位置使用\"\\\"将它分成多…

    Java 2023年5月26日
    00
  • Java 数组转List的四种方式小结

    Java 数组转 List 的四种方式小结 在 Java 开发中,数组和 List 是非常常见的数据类型。有时我们需要将数组转换成 List 以便进行操作。本文将介绍四种将 Java 数组转换成 List 的常用方法。 方法一:使用 Arrays.asList() Arrays 类提供了一个 asList() 方法,可以将数组转换成 List。 SomeTy…

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