为了记录目的而捕获 RuntimeException 是一种不好的做法吗?

2024-01-09

我发现捕获 RuntimeException 通常被认为是不好的做法,因为它们无法纠正并且通常是程序员错误。

然而,我们有一个(疯狂的)大型应用程序,其中任何部分的更改都可能产生不可预见的后果(是的,这本身就是一个问题).

现在,我们开始在应用程序的顶层捕获和记录 RuntimeExceptions,这样我们就可以更有效地解决出现的此类出血问题。

像每个优秀的 Java 团队一样,我们有一个可爱的、热心的 Uncle Bob 追随者,他绝对禁止我们这样做。

这样做到底有多糟糕?难道真的没有任何情况可以接受甚至推荐这样做吗?


捕获 RuntimeException 不是问题,它们是异常,因此可以捕获并正确处理它们。如果 Java 开发人员希望您不要捕获 RuntimeException,他们会将其命名为 RuntimeError。

不好的是捕获 RuntimeException,默默地丢弃它们并继续运行,就像什么都没发生一样。 RuntimeExceptions 用于通知开发人员/用户程序明显离开预期状态的关键问题和情况。至少应该记录下来,并且您应该尝试使程序恢复到舒适的状态。

在发生如此严重的故障后是否可以继续完全取决于您的应用程序。网络服务器即通常捕获所有异常和错误,然后重新启动相应的 Servlet,以便它们可以继续服务请求。

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

为了记录目的而捕获 RuntimeException 是一种不好的做法吗? 的相关文章

  • Python Tornado 中的异常处理

    我正在尝试处理发生的异常AsyncClient fetch这样 from tornado httpclient import AsyncHTTPClient from tornado httpclient import HTTPReques
  • 使用比较器对对象进行排序给出空指针

    我正在尝试对包含 3 张卡的 ArrayList 进行排序 我正在用比较器来做这件事 这是否太过分了 Card getRank 返回 2 到 14 之间的整数 我完全不知道哪里出了问题 我之前已经成功完成了这个 并与我的其他代码进行了比较
  • Hibernate 自定义架构创建

  • 如何在流中收集到TreeMap中?

    我有两个Collectors groupingBy在流中 我需要收集所有信息TreeMap 我的代码 Map
  • java.sql.SQLException: ORA-01005: 给定的密码为空;登录被拒绝

    我在尝试连接到数据库时遇到以下异常 java sql SQLException ORA 01005 null password given logon denied at oracle jdbc driver T4CTTIoer proce
  • Jackson Json 将对象反序列化为列表

    我正在使用 Spring 的 Web 服务RestTemplate并反序列化Jackson 在来自服务器的 JSON 响应中 其中一个字段可以是对象或列表 这意味着它可以是 result or result 有没有办法通过对我要反序列化的类
  • 包含小时、分钟和秒的周期[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个代表年 月 周 日 小时 分钟 秒的间隔数据类型 前三年 年 月 日 可以用Period最后
  • 无法解析配置“:app:debugRuntimeClasspath”的所有文件。问题

    我的 android studio 遇到了下一个问题 导致 org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactResolveEx
  • 如何检查字符串是否具有特定模式[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 用户输入任意字符串 程序会区分该字符
  • PrintStream是有缓冲的,但是flush不会降低性能,而BufferedOutputStream会加速性能

    我预计由于 PrintStream 是缓冲的 通过在每次 print 之后添加刷新操作 速度性能应该会显着降低 但事实并非如此 如下面的代码片段所示 此外 将 PrintStream 包裹在 BufferedOutputStream 周围可
  • 文件保存在文件系统中 VS 保存在数据库中

    我正在设计一个 servlet 或 Struts2 中的操作 用于文件 图像 文档等 下载 但我想知道哪种更好的方法可以将文件保留在文件系统和数据库中 只需保留文件的路径或将文件保留在数据库中 如 BLOB 我知道当我查询数据库时 哪里的
  • Java 泛型和数字类型

    我想创建一个通用方法来有效地执行此操作 class MyClass static
  • 如何将 wsdl 内部架构设置为 Jaxb2Marshaller 以验证我所做的每篇文章?

    我正在使用 SOAP Web 服务 在调用它之前我必须验证每个 xml 帖子 所以我正在使用 The CXF codegen 插件生成POJO树结构 第三部分 wsdl xxxx soap service wsdl 一个类实现Web服务网关
  • 在 JSON 对象中强制执行非空字段

    我们的 REST API 接收一些 JSON 对象输入 其中某些字段要求不为空 这些可以是字符串 整数 甚至可以是其他一些类实例作为参考 我们正在尝试找到一种方法来强制这些字段不为空 而不是在 API 中进行空检查的正确方法 当前的 if
  • Spring @Value 添加验证小于

    我使用以下属性值注入 我如何向此操作添加小于验证 我的意思是我想设置一个验证user maxpassiveday可以说 财产价值不得低于 100 Value user maxpassiveday int maxpassiveday 使用Sp
  • 获取证书链

    我正在 Java 中使用 X509 证书 给定一个证书 是否可以在签名层次结构中找到所有其他证书 直到找到根证书 我有一个证书文件 带有 cer扩展名 我想提取父签名证书 我想继续查找该证书的父证书 直到获得最终的自签名根证书 我已经检查了
  • Android - 保持用户登录状态

    我正在尝试使用 PHP 和 MySQLi for Android 进行登录 我不明白的是如何保持用户登录状态 我看到一个简单的教程 其中有人使用 SQLite 来保护信息 但我不知道这是否真的安全 如何保存用户信息以保持用户登录状态 谢谢
  • Android应用程序中的模式输入

    我想知道是否有其他替代方案可以替代 Android 上平庸的 EditText 密码输入 是否有 API 或开源代码可以集成到我的应用程序中 类似于锁屏图案解锁 Intent 可能会返回哈希值 数字 字符串或代表用户输入的模式的任何内容 我
  • 如果所有类不在同一个包中,Spring @autowired 不起作用

    我有四个包裹 com spring org Files HomeController java com spring org dao Files SubscriberDao java SubscriberDaoImpl java com s
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器

随机推荐

  • 来自 github 的 Git 存储库空绿色文件夹

    我正在从 github 中提取 git 存储库 当我克隆存储库时 会出现一个空文件夹 其中应该包含一个项目 由于其他项目引用了该文件夹 当我浏览 github 上的存储库时 该文件夹显示为绿色 我有什么遗漏的吗 我在用 git clone
  • 在 Xcode 上管理代码片段的最佳方法是什么?

    我已经爱上了 Visual Studio 的代码片段工具包 Xcode 上有类似的东西吗 您还可以看看this https stackoverflow com questions 20420 any resharper equivalent
  • 如何在Windows上安装PLV8?

    我正在尝试将其安装在我的 PostgreSQL 服务器上 http code google com p plv8js wiki PLV8 http code google com p plv8js wiki PLV8这些文档看起来很棒 但问
  • 断开连接的图表上缺少悬停标记

    我遇到了一个问题 我不确定这是 highcharts 插件中的错误还是编程错误 我使用空值来绘制仅包含一个系列的断开线图 但这似乎是悬停标记的问题 其中一些标记 在第一行的顶部和第二行的底部 似乎没有出现 代码很简单 但我找不到导致此问题的
  • Python - 来自 stdin 的 HTTP post [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我每秒左右从 bash 命令 ibeacon scan 获取这种格式的数据 ibeacon scan b stdin py Out
  • 带 -a 的路径对于 bash 函数没有意义

    这是我的 bash 函数 push gt cd var www html wp gt git init gt git add gt git commit am 1 gt git push f origin master gt 我想执行它 d
  • 如何从支持某些 API 的函数返回非具体值?

    我正在两个模型之间构建 API 我不在乎它是否返回 或 Seq 或任何可折叠的都可以 但如果我尝试这样做 就会出错 module Main where import Prelude hiding foldr import Data Fold
  • C# 检查对象是否为空

    我在使用 if 语句检查对象是否为空时遇到问题 我有一个 webClient 在 try catch 中从网站中提取 JSON 字符串 如果出错 那是因为 API 中不存在 3 位国家 地区 我只想跳过它 这是我的代码 System Net
  • 检查 servlet 和 jsp 中的会话

    在我的网络应用程序中 我需要检查会话是否存在 我想在我的 servlet 和 jsp 中检查这一点 有什么方法可以检查这个吗 Thanks 你可以测试它HttpServletRequest getSession boolean create
  • Android-从 DatePickerDialogFragment 中删除 Calendarview

    我有一个工作正常的 Datepickerdialog 片段 当我单击按钮时 datepickerdialog 将打开 左侧有微调器日期选择 右侧有日历视图 对于我在一个地方的应用程序 我只想单独显示微调器日期选择部分 必须删除或隐藏日历视图
  • 将图像转换为 HTML/CSS 中的灰度

    有没有一种简单的方法可以仅用灰度显示彩色位图HTML CSS 它不需要与 IE 兼容 我想也不会 如果它能在 FF3 和 或 Sf3 中工作 那对我来说就足够了 我知道我可以同时做到SVG和 Canvas 但现在看来工作量很大 有真正懒人的
  • 合并到分支,合并到哪一个并不重要?

    git 版本 1 7 5 4 我有大约5个分支机构 全部来自同一个初始分支 我想将 2 个分支合并在一起 比如说 branch1 和branch2 这些分支有很多差异 我目前正在分支 1 上工作 刚刚意识到我在分支 2 中实现了一些我想要在
  • 在twopi (Graphviz) 中控制间距

    我是 Graphviz 的新手 我正在尝试绘制一棵以实体为中心的树 我正在使用twopi命令 如果我把overlap true即使重叠标签周围有很多空间 它也会重叠 如果我把overlap false 标签变得太小 如何才能拥有第一种情况而
  • 如何在每次加载页面时仅重新加载一次

    我有一个 JSP 页面 即使在删除其中一项内容后 该页面仍显示以前的内容 我正在努力寻找问题 但我需要快速解决此问题 我在这方面很弱JavaScript所以请帮帮我 我需要一个JavaScript每次访问页面时都会自动重新加载页面 重新加载
  • 按日期范围和分类变量合并数据集

    假设我有两个数据集 一个包含带有开始 结束日期的促销列表 另一个包含每个计划的每月销售数据 promotions data frame start date as Date c 2012 01 01 2012 06 14 2012 02 0
  • 汉字显示为问号

    之前已经问过这个问题 但我不知道出了什么问题 我正在使用 phantomjs 打印 pdf render 呈现的页面基本上是具有以下属性的本地静态站点 font normal 17px helvetica arial verdana san
  • 使用 htaccess 在标头内设置文件名

    我们有一个从服务器下载文件的应用程序 下载后 需要保存它 因为它使用来自响应标头的文件名参数 当我使用标准 PHP 时download php id downloadID我可以毫无问题地设置标题 现在的任务是在客户端服务器上没有任何可用的
  • 我应该在 Promise 中使用 `return` 吗?

    function saveToTheDb value return new Promise function resolve reject db values insert value function err user remember
  • OpenGL中的glRotate是旋转相机还是旋转世界轴还是旋转模型对象?

    我想知道是否glRotate旋转相机 世界轴或对象 通过例子解释它们有何不同 相机 OpenGL 中没有相机 世界轴 OpenGL 中没有世界 或物体 OpenGL 中没有对象 使困惑 OpenGL 是一个绘图系统 可使用点 线和三角形进行
  • 为了记录目的而捕获 RuntimeException 是一种不好的做法吗?

    我发现捕获 RuntimeException 通常被认为是不好的做法 因为它们无法纠正并且通常是程序员错误 然而 我们有一个 疯狂的 大型应用程序 其中任何部分的更改都可能产生不可预见的后果 是的 这本身就是一个问题 现在 我们开始在应用程