有没有一个 Java 等同于 C# 的 InvalidOperationException?
2022-08-31 20:16:42
我正在将一些C#代码转换为Java,我需要包含一个类似于C#的ValidOperationException的异常。这样的事情存在吗?另外,这两种语言中是否有等效异常类型的列表?谢谢。
我认为在我的特殊情况下,IllegalStateException是最合适的。感谢您的所有回复。
我正在将一些C#代码转换为Java,我需要包含一个类似于C#的ValidOperationException的异常。这样的事情存在吗?另外,这两种语言中是否有等效异常类型的列表?谢谢。
从我读到的关于 InvalidOperationException 的内容来看:“当方法调用对于对象的当前状态无效时引发的异常。
对于 :“在非法或不适当的时间调用方法的信号。换句话说,Java 环境或 Java 应用程序处于适合请求操作的状态。IllegalStateException
根据你使用的方式,我还可以看到 IllegalArgumentException
和 UnsupportedOperationException
是你想要的。前者暗示,一般来说,该方法可以调用,这次只是传递垃圾;后者意味着该方法永远不适合调用此实例(与 不同,这意味着有时调用主题方法可能是合适的,只是目前不合适)。InvalidOperationException
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.
}
因此,在这种情况下,您可以使用非法状态异常,尽管它说:
在虚拟机未处于正确状态时尝试操作时引发。
在上面的参考示例中,非法的 VM 状态绝对不是问题所在。这里的问题是该对象无效,因为它引用了只读日志文件。
我自己的建议:只需定义一个自定义异常,例如
package com.pany.project;
public class InvalidOperationException extends RuntimeException {
// add constructors with call to super as needed
}
对我来说,这比尝试从包装中找到最合适的异常要容易得多。java.lang