如何抛出不会终止我的程序的 IllegalArgumentException?

2024-01-12

好吧,我有一个带有 switch 语句的方法,但我省略了其余的情况,因为它们并不重要。在我的主要方法中,调用运算符方法并在 while 循环中传递参数“选择”,直到他们选择“Q”。

当用户输入负数时,它应该抛出异常,打印一条消息,并忽略他们的输入,然后循环回到开头。当抛出此异常时,它会终止程序。任何帮助将非常感激。谢谢!

public static void operator(String selection) throws IllegalArgumentException{
    Scanner input = new Scanner(System.in);
    double price;
switch(selection){
case "A":
     System.out.println("Enter the price");
        if(input.nextDouble()<0){
            throw new IllegalArgumentException("Price cannot be a negative value");
        }
        else{
            price = input.nextDouble(); 
        }
break;

case"Q":
  System.exit(0);
}
}

IllegalArgumentException 继承自 RuntimeException,因为它不会停止您的程序,您只需使用简单的 try{} catch {} 但我不建议对运行时异常执行此操作。如果是这种情况,请创建您自己的继承自 java.lang.Exception 的 Exception。

您可以在这里使用 try catch。

像这样的东西应该有效:

public static void operator(String selection) {
Scanner input = new Scanner(System.in);
double price;
switch(selection){

case "A":
 System.out.println("Enter the price");
     try {
        if(input.nextDouble()<0) {
            throw new NegativePriceException();
        }
     } catch (NegativePriceException e) {
        System.out.println("The price can't be negative.");
        e.printStackTrace();
     }

    price = input.nextDouble(); 
    break;

case"Q":
  System.exit(0);
}
}

要创建自己的 Exception 类,您基本上需要从 Exception 继承(如果您想对其使用 try catch)或从 RuntimeException 继承(如果您希望它阻止程序运行),如下所示:

public class NegativePriceException extends Exception {

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

如何抛出不会终止我的程序的 IllegalArgumentException? 的相关文章

随机推荐

  • AVPlayerLayer 不显示 AVPlayer 视频?

    让 AVPlayer 视频内容显示在自己的视图中的技巧是什么 我们正在使用以下 AVPlayer 代码 但屏幕上没有出现任何内容 我们知道视频在那里 因为我们能够使用 MPMoviePlayerController 来显示它 这是我们正在使
  • 如何通过C#代码在文本框中向下滚动

    我正在使用 winforms 并且偶尔更新一个文本框 显示消息 但是 当文本到达框的末尾时 它会产生滚动条 我不知道如何向下滚动到底部 我唯一看到的是 ScrollToCaret 但插入符位于文本的开头 滚动的命令是什么 您可以通过使用名为
  • 将 ASP.NET 4 Web 应用程序部署到 IIS6 服务器后,工作进程回收导致其大部分时间停止工作

    这是一个非常奇怪的情况 所以希望我能很好地解释它 我正在将 ASP NET 4 Webforms 应用程序部署到运行 IIS6 的 Windows Server 2003 SP2 服务器 问题是 当应用程序池回收其工作进程 w3wp exe
  • python中二维数组操作的高效并行化

    我正在尝试使用二维数组上的并行操作joblibpython 中的库 这是我的代码 from joblib import Parallel delayed import multiprocessing import numpy as np T
  • 初始化静态库中嵌入的qt资源

    我有下一种情况 我需要在独立静态库中创建小部件 然后将其与最终应用程序 Visual C 9 0 qt 4 5 链接 这个静态小部件库包含一些资源 图标 并由多个 cpp 文件组成 每个文件都包含独立的小部件 据我所知 如果我在静态库中使用
  • 如何使用 Fabric.js 设置对比度和饱和度

    我想在图像编辑器中设置对比度 饱和度和色调 为此 我使用fabric js 但它只有亮度选项 这是我的 Fabric JS 代码 function fabric Object prototype transparentCorners fal
  • 如何有效地将用户添加到 GitLab 中的所有项目(以编程方式或其他方式)

    我有一个包含许多项目的 GitLab CE 服务器 我想向所有项目添加用户 如果可能的话 我希望避免通过 UI 项目 gt 设置 gt 成员 gt 将用户添加到项目 来执行此操作 因为这将花费大量时间 实现此目的的一种方法是将所有项目移至一
  • XML 数据与命名空间的绑定

    我想使用 XML 文档的数据绑定来填充一个简单的表单 该表单显示有关人员列表的详细信息 我已经把一切都设置好了 现在就这样工作
  • 在设置和部署中预编译网站

    每次我使用安装和部署创建一个新的 Web 安装程序并运行它 在编辑属性中的所有好东西之后 输出始终是网站项目的副本 如何输出 WebSite 项目的预编译版本 我所做的是 发布网站 这样我就得到了预编译版本 将这个新的预编译网站作为现有网站
  • 在VBA中循环指定工作表

    我正在尝试使用我在这里找到的一些代码对于每个函数 循环遍历特定命名的工作表 https stackoverflow com questions 21761697 for each function to loop through speci
  • PyCharm 无法识别我的 Python 安装路径

    这是同样的问题this https stackoverflow com questions 23125024 rubymine doesnt recognize my ruby installation path否则 但为了Python 问
  • Babel 文件被复制而不进行转换

    我有这个代码 use strict import browserSync from browser sync import httpProxy from http proxy let proxy httpProxy createProxyS
  • 如何在Python中绘制悬挂根图?

    受此启发question https mathematica stackexchange com questions 120174 how to draw a hanging rootogram in mathematica 如何在 pyt
  • 如果下限大于上限,则创建空序列的序列构造

    不止一次体现R的 聪明 seq函数在极端情况下对我造成了严重的打击lower upper 1 gt 1 0 1 1 0 gt seq 1 0 1 1 0 gt seq 1 0 1 Error in seq default 1 0 1 wro
  • RethinkDB 如何生成自动 ID?

    我正在编写一个脚本 该脚本应该合并来自基于 SQL 的数据库的一些数据 每行都有一个长整数作为主键 增量 我正在考虑对这些 id 进行哈希处理 以便它们在某种程度上 看起来 像我的 RethinkDB 表中已有的其他 id 我在这里试图实现
  • 6 位整数的正则表达式不能是连续或重复的数字?

    我正在尝试获取一个正则表达式来检查以确保提供的 int 是 6 位数字 并且它不是连续的 也不包含所有重复数字 无论是升序还是降序 我并不关心正则表达式是否返回与不允许的数字的匹配 或者返回与允许的原始数字的匹配 例如 所有这些数字都是我需
  • Android 自动圆形图库

    我的图库小部件包含 1 10 张要滑动的图像 我知道当我在屏幕上进行条纹时 图像从左向右滚动 我想要自动循环图库在 10 后自动从第一张图像开始 有没有自动循环适配器或方法 final Gallery g Gallery findViewB
  • Scala XML 支持如何工作?

    我确信这应该是显而易见的 但我可以找到有关我的问题的任何参考资料 Scala XML 使用什么底层技术 它是类似 DOM 或 SAX 或 StAX 的东西吗 处理大型文档时我应该注意哪些性能损失 StAX 是否更高效 提前致谢 可以处理大文
  • CSS 变量名中允许使用句点吗?

    例如 我可以有一个名为如下的 css 变量 Button onHover 请注意 CSS 变量与 CSS 选择器不同 我必须解释这一点 因为有人将其标记为重复项 这是模块中的示例superfly css 变量 颜色 https github
  • 如何抛出不会终止我的程序的 IllegalArgumentException?

    好吧 我有一个带有 switch 语句的方法 但我省略了其余的情况 因为它们并不重要 在我的主要方法中 调用运算符方法并在 while 循环中传递参数 选择 直到他们选择 Q 当用户输入负数时 它应该抛出异常 打印一条消息 并忽略他们的输入