Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用非';你不想被打电话吗?_C#_Exception - Fatal编程技术网

C# 调用非';你不想被打电话吗?

C# 调用非';你不想被打电话吗?,c#,exception,C#,Exception,让我们假设我有一个可变对象,它有一个函数可以对其进行变异,在某些情况下不应该调用该函数。在这种情况下,我应该如何应对调用函数的代码 例如: 对象:战斗 功能:游戏回合() 情况:战斗已经取得胜利 连续性:战斗将以不一致的状态结束 我能想到两种表演方式,但都不合适: 返回一个神奇的值,例如null。这有一个问题,即它不遵循Fail-Quicker思想,并使程序处于无效状态 引发异常。这是一个我觉得更合适的异常,但是我希望避免创建一个新的异常,如果它已经存在一个满足该角色的异常 对于第二种情况,

让我们假设我有一个可变对象,它有一个函数可以对其进行变异,在某些情况下不应该调用该函数。在这种情况下,我应该如何应对调用函数的代码

例如:

  • 对象:战斗
  • 功能:游戏回合()
  • 情况:战斗已经取得胜利
  • 连续性:战斗将以不一致的状态结束
我能想到两种表演方式,但都不合适:

  • 返回一个神奇的值,例如
    null
    。这有一个问题,即它不遵循Fail-Quicker思想,并使程序处于无效状态

  • 引发异常。这是一个我觉得更合适的异常,但是我希望避免创建一个新的
    异常
    ,如果它已经存在一个满足该角色的异常

  • 对于第二种情况,我可以抛出类似 但我找不到这个案子的对应物

    此场景存在等效的现有例外情况?


    注意:假设函数是文档化的,并且它明确表示在这些情况下不应该调用函数。尽管如此,我认为如果开发人员没有阅读文档,那么它应该很难失败。=)

    我会定义一个特定于此的应用程序异常。但是你可以在这里理智地使用InvalidOperationException。

    ?你根本不应该抛出异常-异常是指“等等,什么……你是怎么做到的?”而不是“是的,我知道,不是现在…”不确定Fail Fast是否鼓励你使用异常,但我怀疑…@splite
    invalidooperationexception
    就是专门为此设计的。如果不是例外,那你有什么建议?@splite我不同意。“当方法调用对对象的当前状态无效时引发的异常”听起来非常适合这种情况。你会怎么做?同意,无效操作例外最合适。MSDN:“当方法调用对于对象的当前状态无效时引发的异常。”