52

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


私の特定のケースでは、IllegalStateExceptionが最も適切だと思います。すべての回答をありがとう。

4

2 に答える 2

67

おそらくIllegalStateException

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

For IllegalStateException:「メソッドが違法または不適切な時間に呼び出されたことを示します。言い換えると、Java環境またはJavaアプリケーションが要求された操作に対して適切な状態にありません。」

あなたがどのように使っているかに応じてInvalidOperationException、私はあなたが望むものを見ることができIllegalArgumentExceptionましUnsupportedOperationExceptionた。前者は、一般に、メソッドを呼び出すのに問題がないことを意味します。今回はガベージが渡されただけです。後者は、メソッドがこのインスタンスを呼び出すのに決してIllegalStateException適切ではないことを意味します(これは、現時点ではなく、サブジェクトメソッドを呼び出すことが適切な場合があることを意味します)。


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

于 2010-07-02T12:44:06.520 に答える
4

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私にとっては、パッケージから最適な例外を見つけようとするよりもはるかに簡単です。

于 2010-07-02T13:24:03.920 に答える