为什么我不能从方法中抛出异常

2023-11-25

我是 Java 新手,在抛出异常方面遇到了一些问题。也就是说,为什么这是不正确的

public static void divide(double x, double y) {
    if (y == 0){
        throw new Exception("Cannot divide by zero."); 
        // Generates error message that states the exception type is unhanded 
    }
    else
        System.out.println(x + " divided by " + y + " is " + x/y);
        // other code follows
}

但这可以吗?

public static void divide(double x, double y) {
    if (y == 0)
        throw new ArithmeticException("Cannot divide by zero.");
    else
        System.out.println(x + " divided by " + y + " is " + x/y);
        // other code follows
}

An ArithmeticException is a RuntimeException,所以不需要在 a 中声明throws条款或被抓住catch堵塞。但Exception不是一个RuntimeException.

JLS 第 11.2 节涵盖这个:

未经检查的异常类(第 11.1.1 节)免于编译时检查。

“未经检查的异常类”包括Errors and RuntimeExceptions.

此外,您还需要检查是否y is 0,不是如果x / y is 0.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能从方法中抛出异常 的相关文章

随机推荐

  • Xamarin 中与分辨率相关的字体大小

    我是 Xamarin 新手 正在为我的第一个应用程序而苦苦挣扎 我有一张图像 上面有一个入口视图 这样我就创建了一个自定义条目背景 不过 条目的字体大小不会随着具有不同分辨率的不同设备而缩放 当我调整设备 A 的字体大小并现在在设备 B 上
  • 如何使用用户定义的类对象作为networkx节点?

    类点定义为 其中还有一些方法 属性和东西 但这只是最小的部分 class point def init self x y self x x self y y 于是 我看到了这个问题 但是当我尝试应用它时 它返回一个错误 G nx Graph
  • Oracle SQL 插入多行并返回一些内容

    在 Oracle 中 可以通过执行如下查询来插入多行 INSERT ALL INTO mytable column1 column2 column3 VALUES val1 1 val1 2 val1 3 INTO mytable colu
  • 使用 Hibernate PreInsertEventListener 更改实体

    我正在使用 Hibernate 4 1 尝试调用 PreInsertEventListener 来更新实体 然后再将其插入数据库 基于此处的文章 http anshuiitk blogspot ca 2010 11 hibernate pr
  • 如何在两个HTML页面之间交换变量?

    我有两个 HTML 页面 example1 html and example2 html 我如何传递变量example1 html to example2 html使用查询字符串 并检索该变量example2 html不使用任何服务器端代码
  • 元素不会保持居中,尤其是在调整屏幕大小时

    我的问题是我无法水平居中三角形指针 好吧 对于某些窗口大小 我可以将指针居中 但是当我缩小或扩展窗口时 它会再次将其放置在错误的位置 我缺少什么 body background 333333 container width 98 heigh
  • 如何从 Symfony2 config.yml 读取配置设置?

    我在 config yml 文件中添加了一个设置 如下所示 app config contact email email protected 对于我的一生 我不知道如何将其读入变量 我在我的一个控制器中尝试了类似的操作 recipient
  • 元素之间的间距

    我是 CSS 和 HTML 的完全初学者 我正在构建我的第一个基本培训页面 我现在想做的是在两个元素之间留出间距而不使用 br 目前我正在使用这个 formClear clear left height 25px 它适用于间距 但你这是正确
  • 更多 Pythonic/Pandaic 方法来循环 pandas 系列

    这很可能是非常基本的东西 但我无法弄清楚 假设我有一个这样的系列 s1 pd Series 1 1 1 2 2 2 3 3 3 4 4 4 如何在无需恢复使用 for 循环的情况下对该系列的子系列进行操作 例如 假设我想将其变成一个包含四个
  • 使用 papa parse 解析大型 csv 文件

    我正在尝试加载一个大约 100k 行的文件 到目前为止浏览器已经崩溃 本地 我上网查了一下 发现 Papa Parse 似乎可以处理大文件 现在加载到文本区域的时间减少到大约 3 4 分钟 加载文件后 我想要执行更多 jQuery 来执行计
  • 从 javascript 重定向到操作

    我有一个 MVC4 项目 在客户端我需要重定向到特定的操作方法 我已阅读以下帖子如何从 JavaScript 方法重定向到操作 下面有一条关于使用的评论 window location href controller action para
  • 使 SVG 路径像一条平滑的线,而不是参差不齐

    那么在我创建的项目中河流线 from pathes 并且由于我的这种大笔划宽度这个很ragged 我已经四处寻找了 但我唯一发现的是stroke linejoin round 正如你在这里看到的 好多了 但我仍然不满意 有什么办法可以得到一
  • 为什么虚函数需要通过指针传递而不是通过(对象的)值传递?

    我想我理解虚拟方法和虚表的概念 但我不明白为什么将对象作为指针 或引用 传递和按值传递 哪种废弃虚表或其他东西 为什么这样的事情会起作用 Material m new Texture poly gt setMaterial m method
  • 不知道如何使用 PDFBox

    我正在尝试创建一个 PDF 文件 其中包含文档中的大量文本框和来自另一个类的文本字段 我正在使用 PDFBox 好的 创建一个新文件很容易 编写一行文本也很容易 现在 当我尝试插入下一个文本行或文本字段时 它会覆盖内容 PDDocument
  • 如何在类的头文件中定义 const double?

    在我的类的头文件中 我正在尝试以下操作并收到编译器投诉 private static const double some double 1 0 你应该如何实际做到这一点 在 C 11 中 您可以使用非整数常量表达式 这要归功于constex
  • C# 读取另一个进程内存

    我在从游戏中读取简单的 int 时遇到问题 我用 Cheat Engine 找到了一个静态地址 如果我手动将其插入列表中 它每次都会起作用 但是当我尝试用 C 读取它时 它总是读取 0 字节 如果有人可以提供帮助 那就太好了 Thanks
  • AlertDialog - 当用户点击“确定”时如何运行检查

    对于自定义 AlertDialog 我可以覆盖肯定按钮以不关闭对话框吗 相反 我想运行一些编辑检查 并在检查失败时保持对话框打开 protected Dialog onCreateDialog int id Dialog alertDial
  • Spring - 找不到 WebApplicationContext:没有注册 ContextLoaderListener? [复制]

    这个问题在这里已经有答案了 我在尝试运行 Spring 项目时收到以下错误 HTTP Status 500 java lang IllegalStateException No WebApplicationContext found no
  • 将所需的行移动到 pandas Dataframe 的顶部

    In pandas 如何在不创建数据框副本的情况下将行复制或移动到数据框顶部 例如 我设法用下面的代码几乎完成了我想要的事情 但我的印象是可能有更好的方法来完成此任务 import pandas as pd df pd DataFrame
  • 为什么我不能从方法中抛出异常

    我是 Java 新手 在抛出异常方面遇到了一些问题 也就是说 为什么这是不正确的 public static void divide double x double y if y 0 throw new Exception Cannot d