在finally 块中抛出异常是否是一种好的做法?

2023-12-26

有一个好问题当从finally中抛出异常时,Catch块不会被评估 https://stackoverflow.com/questions/12150994/catch-block-is-not-being-evaluated-when-exceptions-are-thrown-from-finallys这是讨论在finally 块中抛出异常的一些有时意想不到的结果。

我想不出任何好的理由为什么你想在finally 块中抛出异常。如果之前有异常,那么它总是会丢失。我总是看到finally用来以永远不应该抛出异常的方式进行清理。

谁能解释什么时候适合在finally块中抛出异常?


try catch finally 是非常重要的结构。可以确定的是,即使抛出异常,finally 块中的代码也会被执行。处理外部资源并释放它们非常重要。垃圾收集不会为你做到这一点。在最后部分,您不应该有 return 语句或抛出异常。这样做是可能的,但这是一种不好的做法,并且可能会导致不可预测的结果。

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

在finally 块中抛出异常是否是一种好的做法? 的相关文章

  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 使用预编译头减少 clang 编译时间

    我正在开发一个数据库项目 该项目将查询 以某种高级语言表示 编译为 C 代码 这段代码由数据库编译并执行 那部分工作得很好 现在 我正在尝试减少 C 查询代码的编译时间 我想知道是否可以使用预编译头来提高性能 该查询被转换为一个名为 Que
  • 宏可以按参数数量重载吗?

    如何this https stackoverflow com q 9183993 153285工作 如何实现 C99 C 11 可变参数宏以仅根据为其提供多少个参数来扩展到不同的事物 编辑 请参阅末尾以获得现成的解决方案 要获得重载的宏 首
  • 有没有办法将 boost::json::serializer 切换为美化输出?

    Using boost json serializer如中的示例所示文档 快速查看 http vinniefalco github io doc json json usage quick look html以紧凑格式保存 json tre
  • 如何使用boost库读取和写入.ini文件[重复]

    这个问题在这里已经有答案了 如何使用boost库读取和写入 或修改 ini文件 With Boost PropertyTree您可以读取并更新树 然后写入文件 请参阅load and save功能 看一下如何访问属性树中的数据 http w
  • 使用 size_t 值反向遍历向量

    我想以相反的方向遍历向量的值 如您所知 向量的大小为 size t 当我使用以下代码时 for size t r m size 1 r gt 0 r x r f r for size t c r 1 c lt m size c x r m
  • 在 C++ 中使用表达式模板进行符号微分

    如何在 C 中使用表达式模板实现符号微分 一般来说 您需要一种表示符号的方法 即编码的表达式模板 例如3 x x 42 以及一个可以计算导数的元函数 希望您对 C 中的元编程足够熟悉 知道这意味着什么和需要什么 但可以给您一个想法 This
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • printf() 使用字符串表“解码器环”调试库

    我写这封信是想看看你们中是否有人见过或听说过我即将描述的想法的实现 我有兴趣为嵌入式目标开发 printf 风格的调试库 目标非常遥远 并且我和目标之间的通信带宽预算非常紧张 因此我希望能够以非常有效的格式获取调试消息 通常 调试语句如下所
  • 带有自定义鉴别器的 EntityFramework Code First 继承

    我正在尝试在 EntityFramework Code First 中映射以下继承 public class Member public string ProjectName get set public string AssemblyNa
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • 非静态类中的静态方法和静态类中的静态方法有什么区别?

    我有两个班级A级和B级 static class ClassA static string SomeMethod return I am a Static Method class ClassB static string SomeMeth
  • 修改代码以从 Windows 中的 PE 可执行文件检索双重签名信息?

    我已经挣扎了一段时间想要修改这段代码示例 https support microsoft com en us help 323809 how to get information from authenticode signed execu
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • 在 C# WinForms 中预览文档(Word、Excel、PDF、文本文件等)?

    我正在开发一个 C WinForms 应用程序 我希望能够 预览 其中的各种文档类型 也就是说 当用户从列表中选择文件名时 它会在下面以相同的形式显示所选文件的预览 这很像 Outlook 允许您无需双击即可预览选定邮件的方式 有没有什么方
  • 如何在 Winform DataGridView 中创建不同的单元格格式

    我有一个 DataGridView 我将其绑定到 DataTable DataTable 是一个全数字值 要求 DataGridView 中的每 n 行都包含文本 而不是数值 以便在视觉上为用户分隔部分 我很高兴在绑定后将此文本数据放入 D
  • 如何在用户空间程序中使用内核 libcrc32c (或相同的函数)?

    我想在我自己的用户空间程序中进行一些 CRC 检查 我发现内核加密库已经在系统中 并且支持 SSE4 2 我尝试直接 include

随机推荐

  • pymysql无法连接mysql

    我正在尝试使用 pymsql 连接到 MySQL 数据库 主机是 115 28 236 225 并使用默认端口 3306 代码如下 db connect py import pymysql def connDB conn pymysql c
  • jQuery悬停不适用于动态元素

    我从数据库中获取数据 并根据匹配的数量 我想输出 div img src images account related icons link delete png div 我希望该图像在悬停时发生变化 所以我使用以下代码 link dele
  • 空终止字符串的基本原理是什么?

    尽管我非常喜欢 C 和 C 但我还是忍不住对空终止字符串的选择感到摸不着头脑 长度前缀 即 Pascal 字符串在 C 之前就已存在 长度前缀字符串通过允许恒定时间长度查找使多种算法更快 带长度前缀的字符串更难以导致缓冲区溢出错误 即使在
  • Keycloak授权:向域对象或实体添加角色

    我是 Keycloak 框架的新手 在痛苦地编写了自己的解决方案之后 我们希望转换为 KeyCloak 这似乎是一个很有前途的解决方案 但不幸的是缺乏自我描述文档 我已经阅读了教程和术语 但是 我似乎无法通过 Keycloak 概念为我的授
  • R绘图隐式函数外部命令

    我想绘制 x 和 y 的隐式函数 1 0 125 y 2 x 2 0 005我知道它可以绘制为等值线图 但使用 外部 命令时遇到问题 在下面的 x lt seq 0 4 1 01 length 1000 y lt seq 0 3 lengt
  • 是否可以在 ASP.NET MVC FilterAttribute 上使用依赖注入/IoC?

    我有一个简单的习惯FilterAttribute我用它来装饰各种ActionMethods eg AcceptVerbs HttpVerbs Get MyCustomFilter public ActionResult Bar 现在 我希望
  • 为什么 TaskFactory.StartNew 收到 CancellationToken [重复]

    这个问题在这里已经有答案了 可能的重复 任务构造函数中的取消标记 为什么 https stackoverflow com questions 3712939 cancellation token in task constructor wh
  • 如何在 Windows 7 上安装幽灵

    有谁知道 也许是所有相关步骤 如何在 Windows 7 上运行 安装 Wraith 文档 http bbc news github io wraith index html 安装 http bbc news github io wrait
  • 从图像中裁剪椭圆

    我想从图像中提取椭圆区域 图像中面部部分的一部分 最好在 MATLAB 中 例如 在此图像中 我想提取红色边界内的区域 谁能帮我这个 裁剪很容易 您所要做的就是应用适当的蒙版 诀窍是创建这样一个蒙版 假设A是你的图像 试试这个 Create
  • 为什么将整数与长度为 1 的数组进行比较会返回 true,而与长度为 2 或更大的数组进行比较会返回 false?

    为什么将 0 与长度为 1 的数组进行比较会返回 true 而对于长度为 2 或更大的数组则返回 false 例如 var a undefined 0 a a returns false a push 1 1 0 a a returns t
  • 将图外的点设置为上限

    也许这个问题已经存在 但我找不到它 我正在用 Python 绘制散点图 出于说明目的 我不想设置我的轴 范围以包含所有点 可能有一些非常高或非常低的值 而我在这些点中关心的是它们存在 也就是说 它们需要位于情节中 但不是其实际价值 相反 位
  • 实体框架 4 - 从模型更新数据库架构。不擦除表数据

    我正在开发一个新项目 在该项目中我可以使用 Entity Framework 4 从模型到数据库方法进行工作 我正在从事的项目采用敏捷方法 随着时间的推移将推出不同的阶段 模型优先方法适合我的情况吗 我注意到 当您 从模型生成数据库 时 它
  • 核心数据:在一对多关系中按计数排序

    我目前正在尝试设置一个 NSFetchedResultsController 它将根据一对多关系中的实体数量对表视图进行排序 我不确定这在计数时是否会产生影响 但这也是一种反比关系 我认为这样的事情会很好地工作 NSEntityDescri
  • 如何在Oracle Merge语句中使用useparallel(10)提示

    我们如何在oracle merge语句中使用并行 10 提示 我对提示有点陌生 想知道这是否可以用于合并语句 简而言之 首先 必须在服务器上启用并行执行 您需要检查以下3个参数 select name value from v parame
  • 向 macOS Mojave LaunchDaemon 授予相机权限

    我编写了一个 macOS Mojave LaunchDaemon 它会触发 shell 脚本来运行图像快照 https github com rharder imagesnap程序 目的是每秒从相机捕获一张静态图像 问题 守护进程失败并出现
  • Javascript存储在会话中,从python/flask中的会话中获取

    我正在使用 Flask 应用程序 并尝试使用 javascript 存储 Json 对象 并在 python 中检索它 因为我想将用户生成的一种 购物清单 信息存储到我的数据库中 该对象出现在我的浏览器会话存储中 但似乎我的语法已关闭 因为
  • POSIX 取消点应该如何表现?

    我一直在研究 glibc nptl 取消点的实现 并将其与 POSIX 进行比较 除非我弄错了 否则它是完全错误的 使用的基本模型是 int oldtype LIBC ASYNC CANCEL switch to asynchronous
  • SQL Server CPU 利用率恒定为 80%

    我们在专用 VPS 上有一个小型 目前 Asp Net MVC 5 网站 当我转到服务器并启动任务管理器时 我看到 SQL Server Windows NT 64 位 正在使用大约 80 的 CPU 和 170MB RAM 而 IIS 使
  • 为什么我的备用图标可以在 iPhone 上使用,但不能在 iPad 上使用?

    当我构建并部署到 iPhone 时 我可以调用UIApplication shared setAlternateIconName正好 当我在 iPad Pro 上运行时 出现以下错误 错误域 NSCocoaErrorDomain代码 4 该
  • 在finally 块中抛出异常是否是一种好的做法?

    有一个好问题当从finally中抛出异常时 Catch块不会被评估 https stackoverflow com questions 12150994 catch block is not being evaluated when exc