throw用于主动抛出异常对象,必须是throwable实例,常见于参数校验等场景;throw后代码不执行;需区分throws声明。

Java 中用 throw 关键字可以主动抛出一个异常对象,让程序立即中断当前流程,交由最近的 catch 块或调用链上层处理。
throw 后面必须是 Throwable 或其子类的实例
不能直接写异常类型(如 throw NullPointerException;),必须是已创建的对象:
- 可以是系统预定义异常:
throw new IllegalArgumentException("参数不能为负数"); - 也可以是自定义异常:
throw new UserNotFoundException("用户ID不存在"); - 还可以复用已有异常对象(较少见):
throw e;(e 是捕获到的异常引用)
throw 通常出现在逻辑校验失败时
常见于方法入口参数检查、业务规则不满足等场景。例如:
if (amount throw new IllegalArgumentException("取款金额不能为负数");
}
if (amount > balance) {
throw new InsufficientBalanceException("余额不足");
}
// 执行取款
}
throw 和 throws 要区分清楚
throw 是语句,用于抛出一个异常实例;throws 是方法声明的一部分,表示该方法可能抛出哪些异常类型(供调用者知晓和处理):
- 如果 throw 的是 受检异常(如
IOException),方法签名必须用throws声明,否则编译报错 - 如果 throw 的是 非受检异常(如
RuntimeException及其子类),throws声明可选,编译器不强制
throw 之后的代码不会执行
一旦执行到 throw,当前方法立即停止,后续语句被跳过(类似 return)。所以不需要额外加 return 或 else:
throw new NullPointerException("字符串不能为空");
}
// 这里 str 肯定不为 null,可安全使用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











