|
|
1
3
我假设您正在创建自己的业务规则验证引擎,因为您还没有提到您正在使用的那个。
事实上,本月的MSDN杂志有一篇文章提到了新的
由于您使用的是Windows窗体,因此应该使用内置的验证机制:
|
|
|
2
4
(请注意,这可能不是性能的最佳方法,但在对UI输入应用简单的验证检查的情况下,两次验证不太可能有任何意义。或者,上述检查可以纯粹作为仅调试断言检查来完成,以捕捉程序员在不先验证输入的情况下调用方法的任何尝试。一旦你知道所有调用者都遵守他们的约定,通常根本不需要进行发布运行时检查)
Either a member fulfills its contract or it throws an exception. Period. 这遗漏了一件事:合同是什么?在“合约”中声明方法返回状态值是完全合理的。例如文件。Exists()返回一个状态代码,而不是异常,因为这是它的合约。 或 设置名称,它试图在一个任务中完成两个任务,这意味着调用者永远不知道它会表现出什么行为,并且必须对这些情况进行特殊处理。但是,如果将SetName拆分为单独的Validate和Store步骤,则StoreName的约定可以是传递有效输入(由ValidateName传递),如果不符合此约定,则会抛出异常。因为每个方法只做一件事,所以契约非常明确,何时应该抛出异常也很明显。 |
|
|
3
4
我认为你对预期的信息有了错误的印象。这是我昨天从《 current edition of Visual Studio magazine
应谨慎使用异常,因为创建和抛出异常的成本很高,但它们是唯一的例外。NET框架通知客户端(我指的是任何调用组件)错误的方式。 |
|
4
2
我同意Henk的部分建议。
.Has错误 |
|
|
5
1
我经过深思熟虑,想出了这个解决方案。对域类执行以下操作:
|
|
|
6
0
以更新数据库中的记录为例。这是许多可能单独失败的操作的集合。 如。
现在,我们的聚合方法将所有这些联系在一起:
哇!真是一团糟!
然而在上述示例中,
一些积极因素:
*它避免了例外
*The
现在使用例外。..
然后在控制器动作中:
没有检查方法是否成功或失败。.. 没有带异常结果的类型转换。.. 您可以轻松添加一个应用程序范围的异常处理程序,该程序根据异常类型返回正确的响应和状态代码。.. 对控制流使用异常有很多好处。.. 我不确定负面因素是什么。..人们说他们就像GOTO。我真的不知道为什么这很糟糕。..他们还说表现很差。..但那又怎样?这与正在进行的DB调用相比如何?我不确定这些负面因素是否真的是合理的理由。 |
|
|
M.Jane · 组织和编写异常类的正确方法 8 年前 |
|
|
shubham daharwal · java中的内部捕获异常 8 年前 |
|
|
Jon · 如何在不需要任何操作的情况下处理Python异常 8 年前 |
|
|
felix1415 · C++捕获(标准::异常和e)与捕获(…) 8 年前 |
|
k0pernikus · 如何在scala中键入可能引发异常的函数? 8 年前 |