有没有C#的InvalidOperationException Java的等价物?
我正在将一些C#代码转换为Java,我需要包含一个类似于C#的InvalidOperationExceptionexception。 这样的事情存在吗? 在这两种语言中是否还有一个等效的exceptiontypes列表? 谢谢。
我认为在我的情况下,IllegalStateException是最合适的。 感谢所有的答复。
可能是IllegalStateException
。
从我读到的有关InvalidOperationException的内容:“当方法调用对于对象的当前状态无效时引发的exception。
对于IllegalStateException
:“表示某个方法在非法或不适当的时间被调用,换句话说,Java环境或Java应用程序对于请求的操作而言处于不适当的状态。
根据你如何使用InvalidOperationException
,我也可以看到IllegalArgumentException
和UnsupportedOperationException
是你想要的。 前者意味着,一般来说,这个方法可以打电话,这次只是通过了垃圾; 后者意味着该方法从来不适合调用这个实例(不像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就容易多了。