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

为什么除以0时RuntimeException不起作用?

闻人锦
2023-03-14

我想知道为什么执行这段代码时没有抛出runtimeexception(确切地说是ArithmethicException):

代码:

public class Proba {
    public static void main(String[] args) {
        Double d = new Double(5.0);
        try {
            d = d / 0;
        } catch (Exception e) {
            System.out.println("Error division by zero!");
        }
        System.out.println("d = " + d);
    }
}
d = Infinity
C:\Documents and Settings\Admintemp>java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode, sharing)
    null

共有1个答案

车思淼
2023-03-14

这是可能的,因为Java遵循IEEE浮点除法标准。

诚然,整数除以0将抛出ArithmeticException,但浮点除以0将产生Infinity的特殊浮点值。

为了更详细地说明,JLS第15.17.2节说:

[I]如果整数除法中的除数的值为0,则抛出AlithmeticException。

而且

浮点除法的结果由IEEE 754算术规则确定:

(剪辑)

一个非零的有限值除以一个零得到一个有符号的无穷大。符号由上述规则确定。

标志提供了可预测的控制流和速度。它们的使用要求程序员意识到异常情况,但标志粘性允许程序员延迟处理异常情况,直到必要时。

 类似资料:
  • 如果抛出的结果不是25头25尾(即24-26比),它应该擦除包含结果的列表的内容,并再次循环50抛出,直到结果正好是25-25。 打印空列表。 启动while-loop,只有在my_list.count(1)为25时才结束。 使用随机(1,2)掷硬币。 将结果输入my_list。 如果my_list.count(1)不完全是25,那么代码应该擦除列表的内容并重复while循环。 --编码:拉丁语-

  • 我想了两个小时,为什么这段代码不能产生预期的结果。如果我输入3个整数,比如3、4和5,它应该给出所有27个可能的和(假设数字可以是正的、负的或零) 因此,它应该产生以下内容: -3-4-5=-12 -3-4 0 = -7 -4-4 5=3 等等

  • 问题内容: 在最近的项目中,我建议在测试工具代码中捕获RuntimeException并将其记录下来。该代码处理来自数据库的一系列输入,并且我不希望由于任何一个输入(空值,非法参数等)失败而导致测试停止。不用说,我的建议引起了热烈的讨论。 捕获任何一种RuntimeException是否可以接受?如果是,那么可以捕获RuntimeExceptions的其他方案还有哪些? 问题答案: 捕获此异常的原

  • 问题内容: 我正在尝试从JSON网址获取集合。骨干网确实发送了请求并得到了响应,但是在它之后的集合中没有: 这是我的JavaScript: 响应中的JSON 响应中的Content-Type HTTP标头为。 为什么不将其加载到集合中?JSON是否正确? 一些更多的代码: 问题答案: 是异步的。尝试 要么 要么

  • 问题内容: 我有三部分字符串,每个部分用 符号分隔 。例如, 现在,当我使用这样的方法拆分它时: 它包含整个字符串作为单个元素的数组。 但是当我使用这个: 它完美的作品是什么,我想这意味着 现在的数组包含,并分别对指数0,1和2。 我想知道为什么第一次使用时不起作用,因为我在使用 问题答案: 因为字符是在正则表达式中用来标记行尾的保留令牌。因此,您必须使用进行 转义。

  • 问题内容: 我现在有点困惑。我尝试过: 并得到: 但是,我想要: 我的代码有什么问题? 问题答案: 您没有将其分配给。字符串是 不可变的 。 您需要将其分配回。