在Java中如何使用throw关键字

throw用于手动抛出异常,语法为throw new 异常类型("消息");,如throw new IllegalArgumentException("年龄不能为负数");,可结合throws声明检查型异常或用于自定义异常,实现错误提示与流程控制。

在Java中,throw关键字用于手动抛出一个异常对象。它通常用在检测到错误条件时,主动中断程序正常流程并通知调用者发生了异常情况。使用throw的关键是创建一个异常实例,并将其抛出,由上层代码通过try-catch处理或继续向上抛出。

基本语法

throw后面跟一个异常类的实例,该实例必须是Throwable或其子类(如Exception、RuntimeException等)的对象。语法如下:

throw new 异常类型("异常信息");

例如:

throw new IllegalArgumentException("年龄不能为负数");

在方法中使用throw

当某个条件不满足时,可以使用throw提前终止执行。比如验证参数合法性:

public void setAge(int age) {
   if (age       throw new IllegalArgumentException("年龄不能为负数");
   }
   this.age = age;
}

如果调用者传入负数,程序会立即抛出异常,避免错误数据进入系统。

结合throws声明抛出检查型异常

如果抛出的是检查型异常(checked exception),比如IOException,那么必须在方法签名中使用throws声明,否则编译不通过:

public void readFile(String filename) throws IOException {
   if (!filename.endsWith(".txt")) {
      throw new IOException("只支持txt文件");
   }
   // 实际读取文件逻辑
}

调用这个方法的代码就需要用try-catch包裹,或继续向上throws。

自定义异常中的使用

你可以创建自己的异常类,然后在业务逻辑中抛出:

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

public void validateEmail(String email) throws InvalidEmailException {
   if (!email.contains("@")) {
      throw new InvalidEmailException("邮箱格式不正确");
   }
}

这样可以让异常更具体,便于调试和维护。

基本上就这些。throw的作用就是“主动报错”,关键在于选择合适的异常类型,并提供清晰的错误信息。