参考答案
throw和throws的区别:
throw
- 位于方法体内部,可作为单独语句使用;
- 表示方法内抛出某种异常对象(只能是一个);
- 用于程序员自行产生并抛出异常;
- 异常对象是非 RuntimeException,需要在方法申明时加上该异常的抛出。即:需添加throws 语句,或在方法体内try catch 处理该异常,否则编译时会报错;
- 执行到 throw 语句时,后面的语句块不再执行。
throws
- 用于声明在该方法内抛出了异常;
- 方法的定义上,使用 throws 表示这个方法可能抛出某些异常(可以有多个);
- 不可以单独使用,只能跟在方法参数列表的后面;
- 需由方法的调用者进行异常处理。
实例:
- package constxiong.interview;
- import java.io.IOException;
- public class TestThrowsThrow {
- public static void main(String[] args) {
- testThrows();
- Integer i = null;
- testThrow(i);
- String filePath = null;
- try {
- testThrow(filePath);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * 测试 throws 关键字
- * @throws NullPointerException
- */
- public static void testThrows() throws NullPointerException {
- Integer i = null;
- System.out.println(i + 1);
- }
- /**
- * 测试 throw 关键字抛出 运行时异常
- * @param i
- */
- public static void testThrow(Integer i) {
- if (i == null) {
- throw new NullPointerException();//运行时异常不需要在方法上申明
- }
- }
- /**
- * 测试 throw 关键字抛出 非运行时异常,需要方法体需要加 throws 异常抛出申明
- * @param i
- */
- public static void testThrow(String filePath) throws IOException {
- if (filePath == null) {
- throw new IOException();//非运行时异常,需要方法体需要加 throws 异常抛出申明
- }
- }
- }
以上,是Java面试题【throw和throws的区别】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—