Java之 throw 和 throws 相关知识点

1. 异常(Exception)概述

在 Java 中,异常是程序执行中出现的意外事件。这些事件会导致正常的程序流程被中断。Java 提供了异常处理机制,使得程序在面对问题时不至于直接崩溃,而是能够优雅地处理错误。

异常的分类:

  • Checked Exception(已检查异常):编译时检查的异常,必须显式地捕获或通过方法声明抛出。例子:IOExceptionSQLException
  • Unchecked Exception(未检查异常):运行时异常,是 RuntimeException 的子类,编译时不会强制要求处理。例子:NullPointerExceptionArithmeticException
  • Error:Java 中 Error 是系统级的严重错误,比如内存不足,这类错误通常不需要处理,系统会自动处理。

2. throw 关键字

throw 是用于显式抛出异常的关键字。它通常用于在代码中检测到某个条件不满足时主动抛出一个异常,以便告知程序中的其他部分处理这个异常。

用法:

throw new Exception("Error Message");
/**
ExceptionType 是异常类,常见的有 
            NullPointerException、IllegalArgumentException 等。
Error Message 是你自定义的错误信息,会在异常抛出时显示。
*/

示例:如果 `age` 小于 18,程序将会抛出 `illegalArgumentException`,并且终止执行。

public class ThrowExample {
    public static void validateAge(int age) {
        if (age < 18) {
            throw new IllegalArgumentException("Age must be 18 or above to vote.");
        } else {
            System.out.println("Eligible to vote");
        }
    }

    public static void main(String[] args) {
        validateAge(15); // 这会抛出异常
    }
}

注意:

  • throw 后面跟的是异常对象,而不是类型。
  • 一旦抛出异常,方法的执行会立即停止,程序将跳转到异常处理代码。

3. throws 关键字

throws 关键字用于声明一个 方法 可能会抛出的异常,以便调用者知道该方法可能会抛出哪些异常。调用者需要准备好处理这些异常,要么捕获它们,要么继续将其向上传递。

用法:

public void methodName() throws Exception {
    // 代码块
}
/**
ExceptionType 是该方法可能抛出的异常类型,多个异常类型用逗号分隔。
如果一个方法可能抛出多个异常,必须分别声明。
*/

示例:divide 方法通过 throws 声明它可能抛出 ArithmeticException。在 main 方法中,使用了 try-catch 块来捕获该异常。

public class ThrowsExample {
    // 方法声明了会抛出异常
    public static void divide(int a, int b) throws ArithmeticException {
        if (b == 0) {
            throw new ArithmeticException("Cannot divide by zero");
        } else {
            System.out.println("Result: " + a / b);
        }
    }

    public static void main(String[] args) {
        try {
            divide(10, 0);  // 这会抛出异常
        } catch (ArithmeticException e) {
            System.out.println("Caught an exception: " + e.getMessage());
        }
    }
}

4. throwthrows 的区别

throw 是用来抛出异常的:当代码中发生某种不希望发生的情况时,通过 throw 抛出一个异常对象。

throws 是用来声明异常的:当一个方法可能抛出某个异常时,使用 throws 声明该异常,以提醒调用该方法的程序员做好异常处理。

  • throw

        用于在方法内部主动抛出异常对象

        当代码运行时发现错误或不满足某个条件时,使用 throw 抛出异常来通知调用者程序中发生了问题。

        一旦抛出异常,程序将跳过当前方法的剩余代码,直接跳转到调用者的异常处理部分。

        必须抛出一个具体的异常对象,且只能抛出一个对象。

  • throws

        用于在方法声明中标明该方法可能抛出哪些类型的异常

        如果某个方法调用了可能抛出异常的方法,必须要么在当前方法中处理异常,要么通过 throws 声明将异常继续抛给上层调用者处理。

  throws 主要起到通知的作用,告诉调用该方法的代码它有可能抛出异常。

  throws 后面可以列出多个异常类型,用逗号分隔。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值