一部のC#コードをJavaに変換していて、C#のInvalidOperationExceptionに類似した例外を含める必要があります。そのようなものは存在しますか?また、2つの同等の例外タイプのリストがあります。言語?ありがとう。
たぶん IllegalStateException
。
InvalidOperationExceptionについて私が読んだ内容:「オブジェクトの現在の状態に対してメソッド呼び出しが無効である場合にスローされる例外」
IllegalStateException
の場合: "メソッドが不正または不適切なタイミングで呼び出されたことを示すシグナル。言い換えると、Java環境またはJavaアプリケーションは、要求された操作に対して適切な状態ではありません。」
InvalidOperationException
の使い方に応じて、 IllegalArgumentException
および UnsupportedOperationException
が必要なものであることがわかります。前者は、一般的に、メソッドを呼び出しても問題ないことを意味し、今回はガベージが渡されただけです。後者は、メソッドがneverでこのインスタンスの呼び出しに適していることを意味します(IllegalStateException
とは異なり、呼び出しが適切である可能性があることを意味します)対象のメソッドは、現時点ではありません)。
私は一般的なc#<=> Java例外の変換を認識していません。
ペタルは私にこの例のコードを示しました(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
パッケージから最適な例外を見つけるよりもはるかに簡単です。