如何处理资源库中的无效值

本文关键字:无效 资源库 何处理 处理 | 更新日期: 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?

验证问题不应是例外。例外情况应该是非常不寻常的情况(例如不存在的预期文件,内存不足)。例如,输入验证和检查用户输入的文件是否存在不应是例外。