C# 实时 Try Catch

2023-11-24

我希望得到真正使用 C# 进行实时编程或真正了解该语言内部原理的人的回复。

我知道异常不应该用于处理正常处理,而只能用于检测错误情况。关于这个话题有很多讨论。

我想知道仅仅使用 try/catch 块是否会导致运行时间变慢(除非程序必须结束,否则它永远不会捕获异常)。 try/catch 块位于必须重复调用的函数内部。我怀疑只有最小的成本。

成本可以用 CPU 周期或其他任务(与浮点乘法相同的成本)或其他方式来量化吗?

我们在Windows XP下使用Microsoft C#.Net 3.5。


.NET 异常的开销成本非常非常低,除非抛出异常。使用 try/catch 块对性能的影响非常小。我发现即使在非常快、紧密的循环中,对异常处理的到位也几乎没有影响。

然而,.NET 中的异常在抛出时非常昂贵。如果你使用它们,它们往往比许多其他语言对性能产生更大的影响。这是由于创建异常时收集的完整堆栈信息等造成的。

这与其他一些语言相反,例如 python,异常处理的成本较高,但抛出实际上相当高效。

但是,如果您担心,我建议您分析一下您的日常习惯,并亲自测试一下。这是我在进行大量性能分析后的经验。在您自己的代码库中进行测量是无可替代的。

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

C# 实时 Try Catch 的相关文章

  • Automapper、Mapper 未初始化。使用正确的配置调用初始化

    当我尝试将数据提交到数据库时 出现以下错误 Success false Error true ErrorType 2 Message System InvalidOperationException Mapper 未初始化 使用适当的配置调
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • C++:避免​​在重载中将字符串自动转换为布尔值

    我想创建一组方法 这些方法将根据其类型输出具有特殊格式的值 当我这样做时 到目前为止看起来还不错 static void printValue std ostringstream out int value out lt lt value
  • 仅使用一个 #include 表达式一次包含多个头文件?

    是否有任何表达式可以使语法一次包含多个标头 而无需为每个新文件编写 include 表达式 例如 include
  • 我应该使用字节还是int?

    我记得曾在某处读到 即使您只需要字节 使用 Int32 更好 就性能而言 它 据说 仅适用于您不关心存储的情况 这是有效的吗 例如 我需要一个保存一周中某一天的变量 我是吗 int dayOfWeek or byte dayOfWeek E
  • 如何在 C++11 中返回类成员向量

    我读了几篇关于如何从方法返回向量的文章 其中包括 c11 右值和移动语义混淆返回语句 https stackoverflow com questions 4986673 c11 rvalues and move semantics conf
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 绑定集合的子集

    我有一个ObservableCollection
  • 来自同一基模板类的 C++ 重写函数,具有多重继承不明确的函数调用

    我需要打电话init int iNumber 从基类派生的函数 基类 h pragma once include stdafx h template
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • 如何处理文件名中的空格

    我正在尝试迭代本地目录中的文件 foreach string name in Directory GetFileSystemEntries path FileAttrtibutes att File GetAttributes name 文
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 用 std::generate_n 填充 std::map

    我想填写一个std map using std generate n但无法让它发挥作用 我尝试过的是这样的事情 unsigned number of pairs 5 std map
  • C# 中的 mshtml.HTMLDocumentClass

    在 C 中 我设法从 InternetExplorer 对象获取整个 HTMLDocumentClass 导航到某个 URL 然而 在 Visual Studio 2008 的调试模式下 该特定 URL 的 HTMLDocumentClas
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 将二进制长字符串转换为十六进制 C#

    我正在寻找一种将长二进制字符串转换为十六进制字符串的方法 二进制字符串看起来像这样 0110011010010111001001110101011100110100001101101000011001010110001101101011 我

随机推荐

  • Google Cloud Pub/Sub 重试计数

    我们正在从不稳定的消息队列服务迁移到 Node JS 中的 Google Pub Sub 它似乎运行良好 但我们希望包括错误处理 我们希望限制特定消息的重试次数 例如在测试环境中重试 10 次 在生产环境中重试 100 次 现在 如果一条消
  • 如何在 Ember.js 中的控制器之间进行通信

    我想创建一个页面 其中左侧有固定视图 一些过滤器 这些视图应用于右侧的结果 例如 左侧是按流派 标题 创作年份过滤电影的过滤器 右侧是不同的图表和表格 它们根据所选的过滤器进行更新 所以我想在左边有一个固定的视图 然后在右边有一个会根据路线
  • 使用 node-mysql 中的 SSH 隧道连接到 MySQL

    当使用node mysqlnpm 包 是否可以使用 SSH 密钥而不是密码连接到 MySQL 服务器 您可以完全独立地完成 SSH 隧道组件 然后使用通过 SSH 建立隧道的 TCP 将 node mysql 或任何其他 sql 客户端 指
  • 我可以从堆栈中 POP 一个值,但将其放在 NASM Assembly 中的任何地方吗?

    NASM 程序集 Ubuntu 32 位程序 通常 当从堆栈中弹出一个值时 我会这样做 POP somewhere 进入寄存器或变量 但有时 我只是不想把它放在任何地方 我只想删除堆栈中的下一个元素 正在做 POP 就这样不行 我的一个解决
  • PHP:使用单词递增计数器函数(即第一、第二、第三等。)

    我一直在尝试找到一个使用单词递增计数器的函数 我知道可以使用带后缀的数字 即第一 第二 第三等 这是我得到的代码片段 function addOrdinalNumberSuffix num if in array num 100 array
  • JavaScript 以及为什么大写字母有时有效有时无效

    在 Notepad 中 我正在编写一个 JavaScript 文件 但有些东西不起作用 单击按钮时必须显示警报 但它不起作用 我使用了 Notepad 提供的自动完成插件 它为我提供了onClick 当我改变首都时C到一个小c 它确实有效
  • 如何保持后台运行的 iPhone 应用程序完全正常运行

    首先 我知道仅支持 voip 音频和位置应用程序在后台运行 并且它们只会在播放音频或使用位置服务等时运行 我想知道是否有一种方法可以让我的应用程序在后台完全运行 而不管对电池寿命的影响 这样 我的应用程序的用户就可以从设置中进行选择 以便在
  • 调用本机浏览器功能,即使它已被覆盖

    如果我有类似的东西 alert 0 在另一个脚本中 这是在另一个脚本中 我的代码无法在该脚本之前加载 怎么称呼原来的alert我的脚本中的方法 在覆盖原来的之前alert 保存 var origAlert alert alert 0 ori
  • HTML5 Canvas fillText 带有从右到左的字符串

    我试图在 HTML5 Canvas 的 2d 上下文上使用 fillText 方法来绘制用阿拉伯语编写的字符串 它工作得很好 直到我在字符串末尾添加了标点符号 然后标点符号出现在字符串的错误一侧 在开头 而不是结尾 就好像它是 ltr 而不
  • Safari History.db History_visits.visit_time 的格式是什么?

    从 Safari 查看 History db 时 有一个名为history visits其中有一列名为visit time 这是一个REAL价值 它具有诸如470799793 096987 那是什么格式 我希望以 12 08 2015 05
  • 在 Python 中使用 loadmat 加载 .mat 和 .m 文件

    我目前正在学习神经网络课程 并且我正在尝试加载 mat使用Python从文件scipy io loadmat filename 但我不断收到以下错误消息 ValueError 未知的 mat 文件类型 版本 101 58 当我尝试加载 m
  • 使用 Javascript 在 Parse.com 中获取多个相关对象的简单方法?

    我有一个 Player 类 玩家可以拥有 x 数量的奖杯 我有 Player objectId 需要获取他们所有奖杯的列表 在 Parse com 数据浏览器中 Player 对象有一列标记为 trophies Relation
  • C++ 模板:部分模板规范和友元类

    是否有可能以某种方式使部分模板规范成为友元类 IE 假设您有以下模板类 template
  • 是否允许复制/移动省略来使使用已删除函数的程序格式良好?

    考虑以下代码 include
  • GCE 区域的 IP 范围是多少?

    我需要向 CDN 提供创建 GCE 实例时可能使用的 IP 范围 按 GCE 位置划分的 IP 范围列表是否在任何地方发布 我们目前不发布哪些 IP 映射到哪些范围 我们可以并且确实根据需要移动区块以平衡容量 但是 此处列出了所有 Goog
  • Angular Material 2 浏览器自动填充垫选择不起作用

    我有一个代表地址的表单 并且我正在使用 mat select 来表示州 省 不幸的是 它不会自动填充州 省 我假设是因为它不是本地选择 这是我的标记
  • 我如何在 Scala 中表达链式赋值?

    我如何在scala中表达以下java代码 a b c 顺便说一句 我正在重新分配变量 而不是声明 Scala 中最接近的快捷语法只能在声明一个时使用var or val scala gt val c 1 c Int 1 scala gt v
  • htaccess多参数重写规则

    我知道这个问题被过度询问 但找不到任何适合我的问题的东西 我目前正在创建一个网站 我的网址如下 www foo com 或www foo com index php 它们可以采用 1 2 或 3 个不同的参数 例如 www foo com
  • 有没有办法使用 API 从 Google Drive 上的多个文件创建 zip 文件?

    如果您下载目录 Google 云端硬盘网络界面允许您下载单个 zip 文件 但是 我找不到使用 API 来做到这一点的方法 是否可以使用 API 在驱动器上创建多文件 zip 更新 Tanakie 的代码有效 这很棒 但是 我只能在我的个人
  • C# 实时 Try Catch

    我希望得到真正使用 C 进行实时编程或真正了解该语言内部原理的人的回复 我知道异常不应该用于处理正常处理 而只能用于检测错误情况 关于这个话题有很多讨论 我想知道仅仅使用 try catch 块是否会导致运行时间变慢 除非程序必须结束 否则