让我们说我有一个可变对象,它有一个改变它的函数,并且在某些情况下不应该调用该函数。在这种情况下,我应该如何响应调用函数的代码?
例如:
- 对象:战斗
- 函数: 回合()
- 环境:战斗已经赢家
- 承认:战斗将以不一致的状态结束
我能想到两种行为方式,这两种方式都不合适:
-
返回一个魔术值,例如
null
。这有一个问题,即它不遵循"更快失败"的意识形态,并使程序处于无效状态。 -
引发异常。这是我觉得更合适的,但我想避免创建一个新的
Exception
如果它已经存在,它履行了这个角色。
对于第二种情况,我可以抛出类似ArgumentInvalidException
但我找不到这种情况的等效项。
此方案是否存在等效的现有异常?
注意:假设该函数已记录,并且明确表示在这些情况下不应调用该函数。我仍然认为如果开发人员无法阅读文档,它应该会失败=)
我会定义一个特定于此的应用程序异常。 但是你可以在这里理智地使用InvalidOperationException。