8. Java中throw和throws关键字有什么区别?它们各自的作用是什么?
大约 2 分钟
在Java中,throw
和throws
是两个用于处理异常的关键字,但它们的作用和用法有所不同。下面详细解释这两个关键字的区别和各自的作用。
1. throw
关键字
作用:
throw
关键字用于显式地抛出一个异常。它可以抛出已检查异常(Checked Exception)或未检查异常(Unchecked Exception,即RuntimeException及其子类)。用法:当程序遇到某个错误或不希望继续执行时,可以使用
throw
关键字来抛出一个异常对象。例子:
public class ThrowExample { public static void main(String[] args) { validateAge(15); } public static void validateAge(int age) { if (age < 18) { throw new IllegalArgumentException("Age must be 18 or older."); } System.out.println("Age is valid."); } }
在这个例子中,当
validateAge
方法检测到年龄小于18时,会使用throw
关键字抛出一个IllegalArgumentException
异常。
2. throws
关键字
作用:
throws
关键字用于声明一个方法可能会抛出的异常。这是方法签名的一部分,用于告知调用者该方法可能会抛出某些类型的异常。用法:
throws
关键字后面跟随一个或多个异常类型,表示该方法可能抛出这些类型的异常。对于已检查异常,方法必须使用throws
关键字声明,否则编译器会报错。例子:
public class ThrowsExample { public static void main(String[] args) { try { divide(10, 0); } catch (ArithmeticException e) { System.out.println("Exception caught: " + e.getMessage()); } } public static int divide(int a, int b) throws ArithmeticException { if (b == 0) { throw new ArithmeticException("Cannot divide by zero."); } return a / b; } }
在这个例子中,
divide
方法声明了它可能会抛出一个ArithmeticException
异常,因此调用divide
方法时,调用者可以选择捕获这个异常。
总结
throw
:用于显式抛出一个异常,通常在方法的执行过程中根据某些条件抛出特定异常。throws
:用于声明一个方法可能抛出的异常,告知调用者该方法可能会抛出异常。它是方法签名的一部分。
简单来说,throw
是实际抛出异常的动作,而throws
是一个声明,用来告知编译器和调用者该方法可能抛出哪些异常。