JAVA项目常用异常处理汇总

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日

相关文章

  • Spring Security实现退出登录和退出处理器

    下面是Spring Security实现退出登录和退出处理器的完整攻略。 1. Spring Security实现退出登录 在Spring Security中,要实现退出登录功能,需要使用logout()方法。这个方法可以在Spring Security中定义一个LogoutConfigurer来使用。以下是实现退出登录的步骤。 步骤1:在Spring Se…

    Java 2023年5月20日
    00
  • java短网址服务(TinyURL)生成算法

    Java短链接服务(TinyURL)是一种将长链接转换为短链接的算法方法,常用于缩短URL长度,方便用户分享和保存网址。下面是Java短链接服务的完整攻略。 1.将长链接转换为短链接的算法 Java短链接服务的核心是将长链接转换为短链接,其具体算法步骤如下: 1.1 首先生成长链接的哈希码。 1.2 将哈希码分为4段,每段5位。 1.3 将这些5位哈希码转换…

    Java 2023年5月19日
    00
  • Java中获取时间戳的三种方式对比实现

    Java中获取时间戳的三种方式对比实现 时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,它在计算机领域中有着广泛的应用场景,比如记录用户的登录时间、订单生成时间等等。在Java中,获取时间戳有三种方式,包括: 1.使用System类的currentTimeMillis()方法2.使用Date类的getTime()方法3.使用I…

    Java 2023年5月20日
    00
  • 浅谈异常结构图、编译期异常和运行期异常的区别

    浅谈异常结构图、编译期异常和运行期异常的区别攻略 异常结构图 异常结构图通常用来描述异常的类型、继承关系以及异常的处理架构。通常情况下,异常结构图包括三部分:Throwable、Error和Exception。其中,Throwable是所有异常类型的根类,Error用来描述系统级错误,Exception则是普通异常的父类。 graph TD Throwabl…

    Java 2023年5月27日
    00
  • 常见的Java代码优化技巧有哪些?

    常见的Java代码优化技巧主要包括以下几个方面: 1.减少内存使用: Java程序运行时需要占用内存,因此减少内存使用可以提高Java程序的运行速度。具体方法包括: 避免使用过多的静态变量,因为静态变量会在程序启动时立即进行初始化,从而占用额外的内存空间。 避免在循环中创建多余的对象,因为对象创建也需要占用内存。 使用轻量级的容器,如ArrayList代替V…

    Java 2023年5月11日
    00
  • python实现数独算法实例

    python实现数独算法实例 介绍 数独是一种流行的逻辑游戏,也是计算机科学中常见的算法和数据结构问题。本文将介绍基于python实现数独算法的完整攻略。 算法原理 数独算法的原理可以归纳为两部分: 约束传播(Constraint Propagation)——基于已知的数推断未知的数; 回溯(Backtracking)——在没有更多的约束传播时,回溯到之前的…

    Java 2023年5月30日
    00
  • Java中常用时间的一些相关方法

    下面来详细讲解一下Java中常用时间的一些相关方法。 1. 获取当前时间 Java中可以使用java.util.Date和java.util.Calendar类来获取当前时间。 方法一:使用Date类 import java.util.Date; // 获取当前时间 Date now = new Date(); System.out.println(&quo…

    Java 2023年5月20日
    00
  • 64位Windows2008系统下IIS7和Tomcat7整合共用80端口如何解决

    整合IIS7和Tomcat7共用80端口是一种常见的Web服务器配置,但对于64位的Windows2008系统,由于其内核和系统的一些限制,如果不加以特殊处理,在IIS7和Tomcat7同时运行时会遇到80端口被占用、无法访问、无法共享Session等问题。以下是在64位Windows2008系统下整合IIS7和Tomcat7共用80端口的完整攻略。 步骤一…

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