web-dev-qa-db-ja.com

Java C#のInvalidOperationExceptionに相当するものはありますか?

一部のC#コードをJavaに変換していて、C#のInvalidOperationExceptionに類似した例外を含める必要があります。そのようなものは存在しますか?また、2つの同等の例外タイプのリストがあります。言語?ありがとう。


46
James

たぶん IllegalStateException

InvalidOperationExceptionについて私が読んだ内容:「オブジェクトの現在の状態に対してメソッド呼び出しが無効である場合にスローされる例外」

IllegalStateExceptionの場合: "メソッドが不正または不適切なタイミングで呼び出されたことを示すシグナル。言い換えると、Java環境またはJavaアプリケーションは、要求された操作に対して適切な状態ではありません。」

InvalidOperationExceptionの使い方に応じて、 IllegalArgumentException および UnsupportedOperationException が必要なものであることがわかります。前者は、一般的に、メソッドを呼び出しても問題ないことを意味し、今回はガベージが渡されただけです。後者は、メソッドがneverでこのインスタンスの呼び出しに適していることを意味します(IllegalStateExceptionとは異なり、呼び出しが適切である可能性があることを意味します)対象のメソッドは、現時点ではありません)。


私は一般的なc#<=> Java例外の変換を認識していません。

59
Carl

ペタルは私にこの例のコードを示しました(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パッケージから最適な例外を見つけるよりもはるかに簡単です。

3
Andreas_D