当前位置: 首页 > 知识库问答 >
问题:

Java除以零不会引发算术异常--为什么?

楚岳
2023-03-14

为什么这段代码不抛出arithmeticexception?看一看:

public class NewClass {

    public static void main(String[] args) {
        // TODO code application logic here
        double tab[] = {1.2, 3.4, 0.0, 5.6};

        try {
            for (int i = 0; i < tab.length; i++) {
                tab[i] = 1.0 / tab[i];
            }
        } catch (ArithmeticException ae) {
            System.out.println("ArithmeticException occured!");
        }
    }
}

我不知道!

共有1个答案

郁景龙
2023-03-14

为什么你不能自己检查它并抛出一个异常,如果这是你想要的。

    try {
        for (int i = 0; i < tab.length; i++) {
            tab[i] = 1.0 / tab[i];

            if (tab[i] == Double.POSITIVE_INFINITY ||
                    tab[i] == Double.NEGATIVE_INFINITY)
                throw new ArithmeticException();
        }
    } catch (ArithmeticException ae) {
        System.out.println("ArithmeticException occured!");
    }
 类似资料:
  • 问题内容: 为什么这段代码没有抛出?看一看: 我不知道! 问题答案: 您为什么不能自己检查一下并抛出异常(如果您要的话)。

  • 参考第25行(我的for循环条件)。 循环工作得很好,直到我尝试将Digit的值转换为int,我不确定为什么这会导致循环的任何部分将某物除以零。我已经讨论了所有关于使用有理表达式的条件的可能性,不能推导出任何分母都为零的偶然性。无论输入什么数字,我都会得到这个错误。如果不是因为我的教授在一个测试用例中提供了一个数值超过了可以存储在int中的数值,我根本不会选择将number保存为double。该程

  • 问题内容: 因此,我知道IEEE 754为不是实数的值指定了一些特殊的浮点值。在Java中,铸造这些值的原始不会 不 抛出异常像我本来期望。相反,我们有以下内容: 在这些情况下 不 抛出异常的理由是什么?这是IEEE标准,还是Java设计者的选择?我是否不知道有这样的强制转换是否可能导致异常后果? 问题答案: 在这些情况下不抛出异常的理由是什么? 我认为原因包括: 这些都是极端情况,在执行此类操作

  • 为什么我不能在Mammal对象中抛出异常,并在创建该对象的Test类中捕获它? 我试图捕获由teDamage方法抛出的异常,但我得到:异常TakeDamageException永远不会抛出在相应的try语句的正文中 和:未报告的异常TakeDamageException;必须被捕获或声明为抛出mammal.take损害(-123); 将我的异常类定义为:

  • 问题内容: 我有一个I2C设备,需要两个输入:分母和分子。两者均被写入不同的地址,因此不进行实际计算()。问题在于,I2C器件上可能会发生被零除的情况,因此需要检查被零除的错误。理想情况下,如果除法是通过Java代码完成的,则将发生完全相同的事情。 目前,我已经绑定了一个用于进行除法运算的未使用变量,但是我担心它会被优化: 当然,有更好的方法! 问题答案: 你应该 不是 抛出一个Arithmeti

  • 问题内容: 在Java中: 抛出。为什么?为什么在这里投降?我不知道原因。 问题答案: 让我重命名您的班级,以使事情更加清楚。 -> 。 -> 。 仅仅因为你是一个人并不意味着你是一个人。你可能是一个。这就是将A强制转换为A的原因。 另一方面,每个是吗?答案是“是”。这就是为什么您 可以 编写如下代码: 要么 另外值得注意的是,您 可以 执行以下操作: 这样做的原因是您的变量实际上是在引用实例。因