在 .NET 中使用 try-catch 进行流量控制是否“不好”?

2024-05-02

我刚刚在一个项目中发现:

try
{
    myLabel.Text = school.SchoolName;
}
catch
{
    myPanel.Visible = false;
}

我想与开发人员交谈而不是写这个,说会引发空异常(因为school理论上可能为空,而不是myLabel)实际上会使计算机嘟嘟三声,休眠两秒 http://blogs.msdn.com/ricom/archive/2003/12/19/44697.aspx。不过,我想知道我是否记错了这方面的规则。显然,这不是 try/catch 的预期用途,但是这是否因为违背意图而不好,或者因为性能考虑而不好?我觉得这很糟糕,但我想说的不仅仅是“这真的很糟糕”。


您不应该仅仅因为设计不好而将异常用于控制流。这没有道理。例外是针对特殊情况,而不是针对正常流程。在这种情况下,性能可能不会成为问题,因为对于现代硬件上的大多数现代应用程序来说,您可能会整天抛出异常,并且用户不会注意到性能受到影响。但是,如果这是一个处理大量数据或执行大量某种工作的高性能应用程序,那么性能将是一个问题。

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

在 .NET 中使用 try-catch 进行流量控制是否“不好”? 的相关文章

  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary
  • BufferBlock 连续

    我想使用以下方式实现消费者 生产者模式BufferBlock
  • JetBrains Rider 针对 4.5 框架,无法切换到 4.7

    基本上 当尝试添加不支持旧框架的 NuGet 包时 会出现错误 但是在项目配置中只有 4 5 可用 在项目创建过程中 不存在选择目标的选项 有什么方法可以正确配置它吗 I haven t found out how to set up NE
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • std::bind2nd 和 std::bind 与二维数组和结构数组

    我知道 C 有 lambda 并且 std bind1st std bind2nd 和 std bind 已弃用 然而 从C 的基础开始 我们可以更好地理解新特性 所以 我从这个非常简单的代码开始 使用int 数组s 第一个例子 与std
  • 何时使用 C++ 私有继承而不是组合?

    你能给我一个具体的例子吗 什么时候使用私有继承优于组合 就我个人而言 我将使用组合而不是私有继承 但在某些情况下 使用私有继承可能是特定问题的最佳解决方案 正在阅读C faq http www parashift com c faq lit
  • AcceptSocket 超时?

    是否有可能AcceptSocket on a TcpListener具有超时的对象 以便它偶尔被中断 TcpListener server new TcpListener localIP port server Start while sh
  • 打开位置设置页面或提示用户启用位置

    我一直在绞尽脑汁 徒劳地谷歌搜索 我正在尝试找到一种方法来提示用户通过直接进入设置页面或仅点击屏幕上的 是 来切换位置 我见过的所有代码似乎都不起作用 有人有有效的方法吗 一个详细的例子将不胜感激 谢谢 我对 Xamarin 开发非常陌生
  • C#生成的csv文件通过电子邮件发送嵌入到Lotus Note中电子邮件的底部

    我遇到了一个奇怪的问题 即使用 NET SmtpClient 通过电子邮件发送的 CSV 附件出现在电子邮件底部 而不是 Lotus Note 中的附件 我只是不知道如何解决这个问题 而且我无法访问客户端计算机 这使得调试非常困难 我可以采
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 根据 Active Directory 策略检查密码[重复]

    这个问题在这里已经有答案了 我有一个允许用户更改其 AD 密码的前端 有没有办法获取特定用户及其属性 长度 复杂性 的密码策略 例如细粒度 有没有办法根据此特定策略检查字符串 xyz121 编辑 我不想检查活动目录中存储的当前密码 我想检查
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 如何在 SQLite 中检查数据库是否存在 C#

    我目前正在用 C 编写一个应用程序 并使用 sqlite 作为嵌入式数据库 我的应用程序在启动时创建一个新数据库 但如何让它检查数据库是否存在 如果它确实存在 我如何让它使用它 如果不存在如何创建一个新数据库 这是我到目前为止所拥有的 pr
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 如何获取运行或段落的高度

    我找到了Run or Paragraph in FlowDocument现在我需要知道HEIGHT of it i e while navigator CompareTo flowDocViewer Document ContentEnd
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS

随机推荐

  • Plotly 中所有地理范围的列表

    我正在尝试使用在地图上绘制数据plotly js 我知道您可以通过以下方式获得一个国家的地图 layout dict title geo dict scope usa 我们有可用范围的列表吗 不同的地区 某个地方 我尝试过谷歌搜索但似乎找不
  • 如何训练斯坦福 NLP 情感分析工具

    地狱大家 我正在使用斯坦福核心 NLP 包 我的目标是对推文直播进行情感分析 按原样使用情感分析工具对文本 态度 的分析非常差 许多积极因素被标记为中性 许多消极因素被评为积极 我已经在文本文件中获取了超过一百万条推文 但我不知道如何实际获
  • R:计算数据框的边距或行和列总和

    我有一个如下所示的数据框 Flag1 Flag2 Type1 Type2 Type3 1 A FIRST 2 0 0 2 A SECOND 1 9 0 3 A THIRD 3 7 0 4 A FOURTH 9 18 0 5 A FIFTH
  • QCalendarWidget - 如何突出显示日期

    我有一个QList
  • 最近用 Java 编写的 FFTW 包装器

    我正在寻找最新版本的最小 Java 包装器FFTW http www fftw org FFTW 网站上列出的包装器要么已过时 jfftw 1 2 zip ftp ftp fftw org pub fftw jfftw 1 2 zip 或包
  • sqlite 无法识别通用列表

    在 Windows 应用商店应用程序项目中 我从 Web 服务获取 JSON 如下所示 http paste2 org jfMJ2AGA http paste2 org jfMJ2AGA 我有这两门课 public class media
  • Java 中的序列化日期

    我通过 Web 服务传递一些对象 其中一些包含 java sql Date 因为 Date 没有空的构造函数 所以它不想被序列化 问题的第一部分很简单 在客户和服务之间传递日期的最佳方式是什么 第二部分有点棘手 一旦我决定如何传递日期 我显
  • 使用 Joda-Time 有什么缺点吗?

    我想说服架构经理包括乔达时间 http www joda org joda time 我们产品中的罐子 您知道使用它有什么缺点吗 我认为 Joda Time 需要不断更新 因为它包含的文件 这是一个缺点 也许我错了 您能否澄清一下这个主题
  • c# http Post 在 webresponse 中没有得到任何内容

    这是我的请求和响应代码 System IO MemoryStream xmlStream null HttpWebRequest HttpReq HttpWebRequest WebRequest Create url xmlStream
  • 使用 bash 脚本迭代目录中的文件

    我想迭代给定目录中的文件 我尝试使用 for 循环进行相同的操作 但是我在这个循环中还有另一个循环 我需要读取多个文件 直到该循环中的条件为真才能一次上传 但是在内部循环中我是由于文件迭代器循环位于内部循环之外 因此只能访问一个文件 是否有
  • 是否可以仅从复制因子为 3 的 Cassandra 集群中的单个节点读取数据?

    我知道 Cassandra 有不同的读取一致性级别 但我还没有看到一种一致性级别允许仅从一个节点按键读取数据 我的意思是 如果我们有一个复制因子为 3 的集群 那么我们在读取时总是会询问所有节点 即使我们选择一致性级别 1 我们也会询问所有
  • Ant javac 任务出错:[javac] 警告:[选项] 引导类路径未与 -source 1.6 一起设置

    我正在尝试运行一个使用的 ant 任务axis2 ant plugin 1 6 0 jar org apache axis2 tool ant AntCodegenTask执行一个WSDL2Java手术 在ant脚本的顶部 我定义了java
  • 在 Common Lisp 中编写 Lambda 表达式

    我目前正在阅读 Paul Graham 的 ANSI Common Lisp 并且有一个关于编写 lambda 表达式的问题 我们是否需要在 lambda 表达式前面加上前缀 如果我在 REPL 中写这样的东西 它会工作得很好 gt lam
  • 如何在 kibana 中自动配置索引模式

    是否可以在 kibana 中自动配置索引模式 要么通过一些设置文件 要么通过rest api 安装后可以手动完成 Kibana 5 x 公开了这样的 API 来管理索引模式 要创建索引模式 可以发出以下命令来 kibana 访问 url 只
  • 使用java将数据插入mySQL表

    I have a predefined table in a mySQL database 我正在努力将从用户输入的数据保存到数据库中 但我似乎无法将任何数据保存在数据库中 使用以下代码 我尝试更新数据库的第一行 ID 1 到 OTHER
  • 确定视口或“标准”浏览器的最佳方法

    所以 现在我们都知道 iOS 移动 Safari 使用视口 Android 浏览器也是如此 而不是 标准 浏览器窗口 这会导致问题overflow hidden and position fixed 不幸的是 iPad 的情况也是如此 我想
  • 如何在 Objective-C 中删除浮点上的尾随零而不进行四舍五入?

    我需要清除浮点数上的尾随零而不进行四舍五入 我只需要显示相关的小数位 例如 如果我有 0 5 我需要它显示 0 5 而不是 0 500000 如果我有 2 58328 我想显示 2 58328 如果我有 3 我想显示 3 而不是 3 000
  • 在 Elasticsearch 中对具有一个值的属性进行多个值查询

    我正在尝试在这个查询的基础上进行一些构建 我正在搜索的索引还有一个带有 id 的 实体 字段 因此 一些记录将具有 实体 16 实体 156 等 具体取决于实体的 ID 我需要以这样的方式扩展此查询 以便可以传递数组或某些值列表 例如 te
  • 删除键空间挂起

    问题 drop keyspace MyKeyspace hangs 环境 这是 virtualbox 中的 Ubuntu 12 04 64 位 运行单个 Cassandra 实例 在开发计算机上 卡桑德拉是 1 1 6 myuser myh
  • 在 .NET 中使用 try-catch 进行流量控制是否“不好”?

    我刚刚在一个项目中发现 try myLabel Text school SchoolName catch myPanel Visible false 我想与开发人员交谈而不是写这个 说会引发空异常 因为school理论上可能为空 而不是my