如何处理资源库中的无效值
本文关键字:无效 资源库 何处理 处理 | 更新日期: 2023-09-27 17:55:29
我总是听到有人说二传手和接球手应该很快,不要抛出异常。
现在,如果这是真的,如果不抛出异常,我应该如何处理传递给 setter 的无效值?
根据 MSDN
避免从属性获取者引发异常。
属性获取者应该是简单的操作,不应该有任何 前提 条件。如果 getter 可以抛出异常,它可能应该 被重新设计为一种方法。请注意,此规则不适用于 索引器,我们确实期望由于验证 参数。
话虽如此,对我来说,从setter
中抛出异常是绝对可以的,通常getters
永远不应该抛出异常。
将属性视为对象的属性或特征。因此,当您获取该属性的值时,您应该毫无例外地获得。您还希望没有人能够为其设置无效值,因此在设置值时抛出异常是可以的。
此外,作为一种很好的做法,如果属性资源库引发异常,请保留以前的值。 以便保持对象的完整性。MSDN
你可以在这里找到一些很好的讨论 - https://softwareengineering.stackexchange.com/questions/16646/is-throwing-an-exception-from-a-property-bad-form
实际上,我认为构造函数不抛出异常主要是正确的。
对于 getter/setter,问题在于绑定(如 WPF)可能会导致在 getter/setter 中引发异常时出现一些问题。
但通常没有那么多可能导致异常的因素,除了开发过程中的问题(预用的对象为 null?
验证问题不应是例外。例外情况应该是非常不寻常的情况(例如不存在的预期文件,内存不足)。例如,输入验证和检查用户输入的文件是否存在不应是例外。