美文网首页
202. Java 异常 - throw 语句的使用

202. Java 异常 - throw 语句的使用

作者: Cache技术分享 | 来源:发表于2025-09-28 09:14 被阅读0次

202. Java 异常 - throw 语句的使用

在 Java 中,异常的抛出是通过 throw 语句完成的。任何方法都可以使用 throw 语句来抛出异常。throw 语句需要一个参数,这个参数必须是一个 Throwable 对象。Throwable 对象是 Throwable 类的任何子类的实例。


🧐 throw 语句的基本用法

throw 语句的基本语法非常简单:

throw someThrowableObject;

其中 someThrowableObject 是一个继承自 Throwable 类的对象,通常是异常类的实例。


📚 示例:抛出异常

以下是一个常见的栈类中的 pop() 方法示例。该方法从栈中移除并返回栈顶元素,如果栈为空,则抛出 EmptyStackException 异常。

import java.util.EmptyStackException;

public class Stack {
    private Object[] elements;
    private int size;

    public Object pop() {
        Object obj;

        if (size == 0) {
            // 如果栈为空,抛出 EmptyStackException 异常
            throw new EmptyStackException();
        }

        obj = elements[size - 1];
        elements[size - 1] = null;  // 清空栈顶元素
        size--;  // 减少栈的大小
        return obj;  // 返回栈顶元素
    }
}

在上面的 pop() 方法中,我们首先检查栈是否为空。如果栈为空(即 size == 0),则通过 throw 语句抛出一个新的 EmptyStackException 异常。

解释:

  • throw new EmptyStackException();:这行代码创建了一个新的 EmptyStackException 异常对象,并将其抛出。EmptyStackException 是一个运行时异常(RuntimeException 的子类),所以不需要在方法签名中声明它,也不需要在 pop() 方法中使用 throws 关键字。
  • EmptyStackException:这是一个不需要显式声明的运行时异常,因此 pop() 方法不需要在方法签名中声明 throws。对于运行时异常(RuntimeException 或其子类),不强制要求进行异常处理或声明。

🛠️ 创建和抛出自定义异常

除了 Java 内置的异常类,你还可以创建自己的异常类,并在合适的地方抛出它们。创建自定义异常时,必须确保它们继承自 Throwable 类,通常继承自 ExceptionRuntimeException 类。

自定义异常类:

public class InvalidAgeException extends RuntimeException {
    public InvalidAgeException(String message) {
        super(message);
    }
}

使用自定义异常:

public class Person {
    private int age;

    public void setAge(int age) {
        if (age < 0) {
            throw new InvalidAgeException("Age cannot be negative!");
        }
        this.age = age;
    }
}

在上面的代码中,我们创建了一个自定义异常类 InvalidAgeException,它继承自 RuntimeException。当我们调用 setAge() 方法时,如果传入的年龄为负值,我们会抛出这个自定义异常。


📝 总结

  1. throw 语句throw 语句用于抛出异常。它的作用是传递一个异常对象,这个对象必须是 Throwable 类或其子类的实例。
  2. 运行时异常:对于运行时异常(例如 EmptyStackException),方法不需要声明 throws,因为这些异常是非检查异常(unchecked exceptions)。
  3. 自定义异常:你可以创建自己的异常类,继承自 ExceptionRuntimeException,然后在代码中抛出它们。
  4. 抛出异常的目的:通过抛出异常,程序能够在遇到无法继续执行的错误时进行适当的处理或传递错误信息。

相关文章

  • 学习笔记8-异常处理

    异常处理 使用try和catch处理异常 抛出异常 通过throw关键字来抛出异常,执行到throw语句后,函数会...

  • C++语法系列之9-- 异常处理

    1 异常常识: 1)使用throw抛出异常;2)使用try-catch 语句块捕获异常;3)catch语句块中,可...

  • 抛出异常指令

    1、athrow指令 在Java程序中显示抛出异常的操作(throw语句)都是由athrow指令来实现的。除了使用...

  • Java throw:异常的抛出

    到目前为止,你只是获取了被Java运行时系统抛出的异常。然而,程序可以用throw语句抛出明确的异常。Throw语...

  • springboot全局异常处理

    1.java异常 java中的异常可是是函数中的语句引发的,也可以是通过 throw 显示的抛出去的。只要java...

  • 测试开发专题:spring-boot统一异常捕获

    java异常介绍 异常时相对于return的一种退出机制,可以由系统触发,也可由程序通过throw语句触发,异常可...

  • 每日流程图

    面试题 1.throw 和 throws 的区别? throw:是用在语句抛出异常throw特点:1) throw...

  • java关键字-- throw 和 throws 的区别

    使用场景:throw 和 throws 关键字都是用于抛出异常 throw 作用:抛出java已有的错误类位置:...

  • 9,异常

    throw throws try_catch 自定义异常 throw是语句抛出一个异常。 throws是方法可...

  • JS处理异常语句

    throw语句(当发生某种异常或错误从产生的一个信号)语法:throw experssion; try/catch...

网友评论

      本文标题:202. Java 异常 - throw 语句的使用

      本文链接:https://www.haomeiwen.com/subject/adwttstx.html