JAVA项目常用异常处理汇总

yizhihongxing

JAVA项目常用异常处理汇总

在JAVA项目开发过程中,异常是无法避免的,但是合理地处理异常可以提高项目的健壮性和稳定性。本文将介绍 JAVA 项目中常用的异常类型及处理方法。

JAVA 中常见异常类型

编译时异常

编译时异常是指在编译阶段就可以被检查出来的异常。比如:

public class TestException {
    public static void main(String[] args) {
        FileInputStream input = new FileInputStream("a.txt"); //编译器会报出FileNotFoundException
    }
}

运行时异常

运行时异常是指在运行时期间才发生的异常,比如:

public class TestException {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        System.out.println(arr[3]); // 编译器不会报错,但是程序在运行时会抛出ArrayIndexOutOfBoundsException异常
    }
}

错误

Error 是指程序运行时遇到的无法修复的异常,比如 OutOfMemoryError、StackOverflowError 等。

异常处理的方法

try-catch

try-catch 是 JAVA 中最基本的异常处理方法,它可以截获并处理指定的异常。示例代码如下:

public class TestException {
    public static void main(String[] args) {
        try {
            int a = 10 / 0; // 会抛出 ArithmeticException 异常
        } catch (ArithmeticException e) { // 捕获 ArithmeticException 异常
            System.out.println("发生了算数异常!");
            e.printStackTrace(); // 打印异常堆栈信息
        }
    }
}

throws

throws 关键字通常用于方法声明中,表示方法可能会抛出某种类型的异常。如果该方法确实抛出了异常,则需要调用它的方法要么使用 try-catch 块来捕获异常,要么使用 throws 关键字来将异常一层层抛出。示例代码如下:

public class TestException {
    public static void main(String[] args) throws Exception {
        testMethod();
    }

    public static void testMethod() throws Exception {
        // do something
        throw new Exception("抛出一个异常!");
    }
}

finally

finally 关键字用于定义一个代码块,在 try-catch 语句块之后执行,无论是否抛出异常都会被执行。通常用于释放资源等操作。示例代码如下:

public class TestException {
    public static void main(String[] args) {
        FileInputStream input = null;
        try {
            input = new FileInputStream("a.txt");
            // do something
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close(); // 关闭资源
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

示例说明

示例一

假设我们正在开发一个文件上传的功能,在上传文件前需要检查文件的格式是否符合要求。如果文件格式不正确,则需要抛出一个自定义的异常,提示文件格式不正确。

public class FileUploadException extends Exception {
    // 自定义异常代码,用于在提示信息中显示
    private int code;

    public FileUploadException(String message, int code) {
        super(message);
        this.code = code;
    }

    public int getCode() {
        return code;
    }
}

public class FileUpload {
    public void upload(File file) throws FileUploadException {
        String filename = file.getName();
        // 检查文件格式是否符合要求
        if (!filename.endsWith(".txt")) {
            throw new FileUploadException("文件格式不正确!", 1001);
        }
        // 如果文件格式正确,上传文件
        // do something
    }
}

示例二

假设我们正在开发一个计算器程序,它支持加、减、乘、除四种运算。当用户输入了一个无法进行除法计算的算式时,则需要抛出一个自定义的异常,提示“除数不能为零”。

public class DivideByZeroException extends Exception {
    public DivideByZeroException(String message) {
        super(message);
    }
}

public class Calculator {
    public int calculate(int num1, int num2, char operator) throws DivideByZeroException {
        if (operator == '+') {
            return num1 + num2;
        } else if (operator == '-') {
            return num1 - num2;
        } else if (operator == '*') {
            return num1 * num2;
        } else if (operator == '/') {
            if (num2 == 0) {
                throw new DivideByZeroException("除数不能为零!");
            }
            return num1 / num2;
        } else {
            throw new IllegalArgumentException("不支持的运算符!");
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA项目常用异常处理汇总 - Python技术站

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

相关文章

  • javaweb实现投票系统

    实现一个简单的投票系统可以分为以下步骤: 确定需求,设计数据库表结构 首先需要明确系统的功能需求以及相应的数据表结构,如投票主题、投票选项、投票结果等。可以使用MySQL、Oracle等数据库进行设计。 搭建开发环境 选择Eclipse、IntelliJ IDEA等Java开发工具,搭建相应的开发环境,并搭配相应的Web服务器,如Tomcat、Jetty等。…

    Java 2023年5月19日
    00
  • SpringBoot与Spring之间的对比

    关于“SpringBoot与Spring之间的对比”的话题进行完整攻略,可以从以下几个方面进行讲解。 1. Spring和SpringBoot的定义和特点 首先,我们需要了解Spring和SpringBoot的定义和特点。 Spring是一个经典的开源Java框架,它主要应用于企业级应用的开发,提供了一系列的解决方案以适应复杂的应用需求,如IoC容器、AOP…

    Java 2023年5月15日
    00
  • 实战讲解Maven安装及基本使用详解

    实战讲解Maven安装及基本使用详解 什么是Maven Maven是一款管理Java项目构建、依赖管理、自动化构建、发布管理的工具,同时也是一个强大的项目管理工具。通过Maven,我们可以明确项目的开发流程,控制项目的质量和构建过程。使用Maven可以大大提高Java项目的开发效率,并且可以帮助我们更好地管理项目所依赖的库。 Maven的安装步骤 下载Mav…

    Java 2023年5月20日
    00
  • Spring Data Jpa框架最佳实践示例

    Spring Data JPA 是 Spring 基于 ORM 框架 JPA 封装的一套 CRUD 框架,可以极大简化恶心的JPA代码量和复杂度。然而,最佳实践的框架使用方式要求开发人员对于 Spring Data JPA 以及 JPA 有充分的理解和掌握。 本篇攻略将介绍 Spring Data JPA 框架的最佳实践,并给出两条实例。 一.基本配置 1.…

    Java 2023年5月20日
    00
  • Resty极简restful框架快速接入Spring

    Resty是一个基于Java的类似于JAX-RS的RESTful框架,它提供了核心的RESTful应用层框架,可以快速搭建RESTful应用程序。在这里,我将详细介绍如何将Resty快速整合到Spring框架中。 准备工作 在整合Resty之前,请确认已经安装好以下环境: JDK 1.8或更高版本 Maven 3.0或更高版本 Spring框架 添加Mave…

    Java 2023年5月19日
    00
  • java从文件中读取数据的六种方法

    Java从文件中读取数据的六种方法 在Java应用程序中,从文件中读取数据是一个常见的操作。这篇文章将为大家介绍Java读取文件的六种方法,帮助大家学习如何读取文件数据。 方法1:使用 FileInputStream FileInputStream fileInputStream = null; try { File file = new File(&quo…

    Java 2023年5月20日
    00
  • 出现java.util.ConcurrentModificationException 问题及解决办法

    出现java.util.ConcurrentModificationException 问题及解决办法 问题背景 在Java并发编程中,如果在迭代集合的过程中对集合进行了修改,就会出现 java.util.ConcurrentModificationException 异常。 例如,下面的代码中,我们使用了 for-each 迭代器来遍历列表中的元素,同时在…

    Java 2023年5月27日
    00
  • JavaWeb 中 Filter过滤器

    Filter过滤器 每博一文案 师傅说:人生无坦途,累是必须的背负,看多了,人情人暖,走遍了离合聚散,有时会 在心里对自己说,我想,我是真的累了,小时候有读不完的书,长大后有赚不尽的力。 白天在外要奋斗打拼,把心事都藏起来,笑脸相迎,做一个合格的员工,晚上回家要照顾家人。 把家务都打理的井井有条,做一个称职的伴侣,习惯了所有事情,自己扛,习惯了所有委屈自己消…

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