扔什么样的例外?

dev*_*ium 3 .net c# vb.net exception-handling exception

这个问题可能听起来有点愚蠢,但在这里.

我有两个可以随时调用的函数.第一个函数拍摄快照,第二个函数分析从该快照获取的数据.当然,如果用户在获取快照之前尝试分析快照,我的应用程序应该抛出异常.我知道ArgumentOutOfRangeException,当......存在无效的争论时,通常会抛出这种情况,但实际情况并非如此.这种情况是否有任何内置异常,或者我必须使用ArgumentOutOfRangeException

谢谢

Luk*_*keH 16

InvalidOperationException

  • "当方法调用对象的当前状态无效时抛出的异常." (3认同)

Kim*_*man 16

听起来像是InvalidOperationException. http://msdn.microsoft.com/en-us/library/system.invalidoperationexception.aspx

也就是说,如果你可以设计你的API以便你无法处理这种情况,那就更好了.像(伪)的东西:

public Data TakeSnapshot()
{
   // ...
   return new Data(...);
}

public void Analyze(Data data)
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

像这样,没有办法把它们称为乱序.


djn*_*jna 8

为什么你允许他弄错?方法怎么样?

 ISnapshot getSnapshot()
Run Code Online (Sandbox Code Playgroud)

ISnapshot具有analyze方法.或者只是analyze()获取快照(如果没有)

  • +1,我会采用这种方法,通过要求代码在访问方法之前实际拥有快照来使问题消失. (3认同)