Java中的异常触发都是通过throw主动抛出
发布日期:2021-04-30 21:02:04 浏览次数:112 分类:精选文章

本文共 1824 字,大约阅读时间需要 6 分钟。

自定义运行时异常与API中运行时异常的行为有何不同?实际上,无论是自定义的运行时异常还是API中提供的运行时异常,都是需要主动被抛出的。如果你希望在程序运行时自动抛出异常,必须在代码中使用throw关键字主动抛出异常。

以下是实现自定义运行时异常的步骤:

  • 定义自定义运行时异常类
    运行时异常在Java中继承自RuntimeException类。因此,你可以创建一个自定义的运行时异常类,例如:
  • public class IllegalAgeRuntimeException extends RuntimeException {    public IllegalAgeRuntimeException(String message) {        super(message);    }}
    1. 在需要的地方使用throw关键字
      当你想要抛出自定义运行时异常时,使用throw关键字并传递异常对象。例如:
    2. public class Demo {    public static void main(String[] args) {        // 当调用`judgeAgeRuntime`方法时,会抛出自定义运行时异常        judgeAgeRuntime(-1);    }    public static void judgeAgeRuntime(int age) {        if (age > 150) {            throw new IllegalAgeRuntimeException("你活不了那么大岁数,你就是普通人");        } else if (age < 0) {            throw new IllegalAgeRuntimeException("你的年龄不可能是负数");        }    }}

      需要注意的是,运行时异常不会自动在方法中抛出。它们需要像上述代码中一样,通过throw关键字被主动抛出。如果不在try-catch块中处理,运行时异常将导致程序终止,且不会显示友好的错误信息。

      关于异常的处理

      • 如果你希望捕获并处理运行时异常,可以在方法中添加try-catch块。
      • 如果你希望让调用者处理异常,可以在方法签名中声明抛出该异常,并在调用者处使用try-catch捕获。

      示例代码

      public class Demo {    public static void main(String[] args) {        try {            judgeAge(10);        } catch (IllegalAgeException e) {            System.out.println("捕获到异常:" + e.getMessage());        }    }    public static void judgeAge(int age) throws IllegalAgeException {        if (age > 150) {            throw new IllegalAgeException("你活不了那么大岁数,你就是普通人");        } else if (age < 0) {            throw new IllegalAgeException("你的年龄不可能是负数");        }    }}

      自定义异常类

      • 运行时异常类IllegalAgeRuntimeException
      public class IllegalAgeRuntimeException extends RuntimeException {    public IllegalAgeRuntimeException(String message) {        super(message);    }}
      • 编译时异常类IllegalAgeException(继承自Exception):
      public class IllegalAgeException extends Exception {    public IllegalAgeException(String message) {        super(message);    }}
    上一篇:【C/C++19】_public.h,_public.cpp,_cmpublic.h
    下一篇:Leetcode--994. 腐烂的橘子(java)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2026年06月01日 06时07分03秒