有没有C#的InvalidOperationException Java的等价物?

我正在将一些C#代码转换为Java,我需要包含一个类似于C#的InvalidOperationExceptionexception。 这样的事情存在吗? 在这两种语言中是否还有一个等效的exceptiontypes列表? 谢谢。


我认为在我的情况下,IllegalStateException是最合适的。 感谢所有的答复。

可能是IllegalStateException

从我读到的有关InvalidOperationException的内容:“当方法调用对于对象的当前状态无效时引发的exception。

对于IllegalStateException :“表示某个方法在非法或不适当的时间被调用,换句话说,Java环境或Java应用程序对于请求的操作而言处于不适当的状态。

根据你如何使用InvalidOperationException ,我也可以看到IllegalArgumentExceptionUnsupportedOperationException是你想要的。 前者意味着,一般来说,这个方法可以打电话,这次只是通过了垃圾; 后者意味着该方法从来不适合调用这个实例(不像IllegalStateException ,这意味着有时可能适合调用主题方法,而不是现在)。


我不知道一般c#<=> Java例外的翻译。

Petar指出我这个示例代码(来自msdn)

 void WriteLog() { if (!this.logFile.CanWrite) { throw new System.InvalidOperationException("Logfile cannot be read-only"); } // Else write data to the log and return. } 

所以在这种情况下,你可以使用IllegalStateException,虽然它说:

在虚拟机未处于正确状态时尝试执行操作时抛出。

在上面的参考例子中,非法的虚拟机状态肯定不是问题。 这里的问题是对象是无效的,因为它引用了一个只读的日志文件。

我自己的build议:只需定义一个自定义exception

 package com.pany.project; public class InvalidOperationException extends RuntimeException { // add constructors with call to super as needed } 

对我来说,那么试图从java.lang包中find最合适的Exception就容易多了。