我正在将一些 C# 代码转换为 Java,我需要包含一个类似于 C# 的 InvalidOperationException 的异常。这样的事情存在吗?还有两种语言中等效异常类型的列表吗?谢谢。
我认为在我的特殊情况下 IllegalStateException 是最合适的。感谢所有的回复。
我正在将一些 C# 代码转换为 Java,我需要包含一个类似于 C# 的 InvalidOperationException 的异常。这样的事情存在吗?还有两种语言中等效异常类型的列表吗?谢谢。
从我读到的有关 InvalidOperationException 的内容中:“当方法调用对对象的当前状态无效时引发的异常。”
For 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,尽管它说:
在虚拟机未处于正确状态时尝试操作时引发。
非法 VM 状态绝对不是上述参考示例中的问题。在这里,问题是对象无效,因为它引用了只读日志文件。
我自己的建议:只需定义一个自定义异常,例如
package com.pany.project;
public class InvalidOperationException extends RuntimeException {
// add constructors with call to super as needed
}
对我来说,这比尝试从包中找到最合适的异常要容易得多java.lang
。