.net – 捕获异常作为预期的程序执行流控制?
我总是认为,期待异常被定期抛出,并将它们用作流逻辑是一件坏事.异常感觉他们应该是这样的“例外”.如果您期待和规划一个例外,这似乎表明您的代码应该被重构,至少在.NET中…
然而.最近的一个场景让我暂停.之前我发贴了msdn,但我想产生更多的讨论,这是完美的地方! 所以说,你有一个数据库表,其中有几个其他表的外键(在最初引起辩论的情况下,有4个外键指向它).你想允许用户删除,但只有没有外键引用;你不想级联删除. 这个项目的领导要我改变它,只是用547(外键约束)的代码捕获一个SqlException,并以这种方式处理它. 我曾是… 但是在这种情况下,吞咽异常相关的开销可能要比吞噬4个表格命中更有效…特别是因为我们必须在每一种情况下进行检查,但是我们在这种情况下免除了异常当没有孩子的时候 在某种程度上,我仍然觉得我错了. 你们有什么想法和故意处理例外?看起来像预先检查会更有效吗?下一个开发人员看你的代码更混乱,还是更混乱吗?是否更安全,因为数据库可能会知道开发人员可能没有想到添加检查的新外键限制?或者这是一个关于你认为最佳实践是什么的观点的问题? 解决方法哇,首先,你可以请一点点解释这个问题,而很好阅读一个深思熟虑的解释问题,这是相当多的消化. 简短的答案是“是”,但它可以依赖. >我们有一些应用程序,我们有很多业务逻辑绑定在SQL查询(而不是我的设计Gov!).如果这是结构化的,管理层可能很难说服其他方式,因为它“已经有效”. 我的想法是: 我会做两个如果我能快速失败并提供更好的用户体验,那么很棒.任何预期的SQL(或任何其他)异常应该被捕获并反馈回来. 我知道有一个共识,除了特殊情况外,不应该使用异常,但请记住,我们在这里跨越应用程序界限,什么都不期望.就像我说的,这就像File.Exists,没有任何意义,它可以在你访问之前被删除. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |