Java:如何在不使用throw语句的情况下引发自定义Runtime Exception?

维格纳图斯

说,我想防止当前软件包中任何地方除以3。通常的过程是制作一个Exception子类:

class NoDivbyThreeException extends RuntimeException {
    public NoDivbyThreeException (String msg) {
        super(msg);
    }
}

然后将其扔到需要的地方:

class CustomExceptionDemo {
    public static void main(String[] args) {
        int numr = 5;
        int denr = 3;
        try {
            if (denr==3) throw new NoDivbyThreeException("Div by 3 not allowed");
            else System.out.println("Result: " + numr/denr);
        }
        catch (NoDivbyThreeException e) {
            System.out.println(e);
        }
     }
}

但是我想要的是,JVM应该在没有明确声明main()内的throw语句的情况下,防止在该包内的任何地方除以3。换句话说,JVM通过在遇到这种情况时自动抛出异常来防止被零除的方式,我希望我的程序在程序包中遇到被3除的情况时也能做同样的事情。

这可能吗?如果没有,请说明原因。这将有助于清除我的概念。

保罗

如果Exception没有显式地抛出它,则无法抛出它。除了某些内部Exceptions(如被0除)外,它们由JVM处理。这些包括NullPointerException(如果未由明确的throw语句抛出),被0除和其他一些错误。但是,这些异常实际上是通过从基础平台接收到错误而创建的。例如,如果被0除,则该错误已由CPU生成。

因此,除非您的代码以某种方式在基础平台中创建了错误,否则您必须自己创建错误。其他任何事情都将要求JVM具有高度可变性,由于行为不一致,这没有多大意义,这是不希望的,并且会导致极大的安全风险。举例说明为什么不希望使JVM变为可静音:
请考虑您的示例:

我们可以有三个选项来处理此问题(不存在,AFIAK):

  • 如果发生除以三(可能)的除法运算,则更改编译器中的代码以引发异常。缺点:膨胀代码
  • 改变JVM的行为:更不可取。考虑一个抛出除以3的异常的库。现在,您想在代码中使用该库。但是您期望正常的算术行为,并且在除以3时会遇到一些奇怪的错误。
  • 将一个标头添加到描述JVM预期行为的库中。与第一个选项相比,只有负载从编译和内存移至运行时以及在运行编译时启动/启动。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用BOOST_THROW_EXCEPTION?

来自分类Dev

如何在不使用静态方法的情况下创建自定义Twig函数类?

来自分类Dev

在不使用jQuery的情况下访问自定义指令的子元素

来自分类Dev

如何在没有自定义HTML标签的情况下使用AngularJS?

来自分类Dev

在不使用自定义搜索API的情况下检索Google结果

来自分类Dev

如何在不使用Wordpress中使用自定义表的情况下将自定义插件数据存储到数据库

来自分类Dev

从catch-exception-strategy引发自定义异常

来自分类Dev

在没有jQuery的情况下触发自定义事件

来自分类Dev

Java引发自定义错误

来自分类Dev

如何使用java8 lambda表达式引发自定义检查的异常?

来自分类Dev

如何在不使用自定义适配器的情况下从ListView获取特定的TextView(View)?

来自分类Dev

如何在不使用Gradle显式定义其路径的情况下定义自定义源集?

来自分类Dev

Throw string exception from inherited exception class

来自分类Dev

在不使用自定义授权的情况下创建对Firebase存储的组访问

来自分类Dev

如何使用自定义脚本在不使用Visual Studio的情况下添加/更新引用?

来自分类Dev

如何在不使用customElement的情况下创建自定义HTML标签?

来自分类Dev

如何在不使用API网关进行自定义Spring REST API授权的情况下使用AWS Cognito

来自分类Dev

是否可以在不使用自定义集合访问器的情况下监视属性的更改?

来自分类Dev

如何在不使用swiftUI附带的幻灯片进行删除的情况下创建自定义删除按钮我不使用列表,仅使用foreach循环

来自分类Dev

如何在不使用注释的情况下为自定义DTO操作配置标识符?

来自分类Dev

如何在不使用IB的情况下使用自定义UITabBar类创建UITabBarController?

来自分类Dev

Java:在没有KeyListener或不使用任何其他自定义类的情况下捕获键事件

来自分类Dev

Magento-如何在观察者中不使用优惠券代码的情况下添加自定义折扣

来自分类Dev

您如何在不使用now()函数的情况下将自定义timeuuid插入cassandra?

来自分类Dev

从catch-exception-strategy引发自定义异常

来自分类Dev

ReactJS初学者:关于如何在不使用渲染功能的情况下使用自定义标签

来自分类Dev

如何在AngularJS中引发自定义异常?

来自分类Dev

Crystal 引发 Exception 的类

来自分类Dev

如何在不使用 UIActivityViewController 的情况下为 Airdrop 共享创建自定义 UI?

Related 相关文章

  1. 1

    如何使用BOOST_THROW_EXCEPTION?

  2. 2

    如何在不使用静态方法的情况下创建自定义Twig函数类?

  3. 3

    在不使用jQuery的情况下访问自定义指令的子元素

  4. 4

    如何在没有自定义HTML标签的情况下使用AngularJS?

  5. 5

    在不使用自定义搜索API的情况下检索Google结果

  6. 6

    如何在不使用Wordpress中使用自定义表的情况下将自定义插件数据存储到数据库

  7. 7

    从catch-exception-strategy引发自定义异常

  8. 8

    在没有jQuery的情况下触发自定义事件

  9. 9

    Java引发自定义错误

  10. 10

    如何使用java8 lambda表达式引发自定义检查的异常?

  11. 11

    如何在不使用自定义适配器的情况下从ListView获取特定的TextView(View)?

  12. 12

    如何在不使用Gradle显式定义其路径的情况下定义自定义源集?

  13. 13

    Throw string exception from inherited exception class

  14. 14

    在不使用自定义授权的情况下创建对Firebase存储的组访问

  15. 15

    如何使用自定义脚本在不使用Visual Studio的情况下添加/更新引用?

  16. 16

    如何在不使用customElement的情况下创建自定义HTML标签?

  17. 17

    如何在不使用API网关进行自定义Spring REST API授权的情况下使用AWS Cognito

  18. 18

    是否可以在不使用自定义集合访问器的情况下监视属性的更改?

  19. 19

    如何在不使用swiftUI附带的幻灯片进行删除的情况下创建自定义删除按钮我不使用列表,仅使用foreach循环

  20. 20

    如何在不使用注释的情况下为自定义DTO操作配置标识符?

  21. 21

    如何在不使用IB的情况下使用自定义UITabBar类创建UITabBarController?

  22. 22

    Java:在没有KeyListener或不使用任何其他自定义类的情况下捕获键事件

  23. 23

    Magento-如何在观察者中不使用优惠券代码的情况下添加自定义折扣

  24. 24

    您如何在不使用now()函数的情况下将自定义timeuuid插入cassandra?

  25. 25

    从catch-exception-strategy引发自定义异常

  26. 26

    ReactJS初学者:关于如何在不使用渲染功能的情况下使用自定义标签

  27. 27

    如何在AngularJS中引发自定义异常?

  28. 28

    Crystal 引发 Exception 的类

  29. 29

    如何在不使用 UIActivityViewController 的情况下为 Airdrop 共享创建自定义 UI?

热门标签

归档