Существует ли Java, эквивалентный из InvalidOperationException C#? [дубликат]

45
задан Stephen Kennedy 9 November 2018 в 17:32
поделиться

2 ответа

Вероятно IllegalStateException .

Из того, что я читал об InvalidOperationException: «Исключение, которое выдается, когда вызов метода недопустим для текущего состояния объекта».

Для IllegalStateException : «Сигнализирует, что метод был вызван в недопустимое или неподходящее время. Другими словами, среда Java или приложение Java не находится в подходящем состоянии для запрошенной операции. "

В зависимости от того, как вы используете InvalidOperationException , я также мог видеть IllegalArgumentException и UnsupportedOperationException - это то, что вы хотите. Первое подразумевает, что в целом метод можно вызывать, на этот раз он был просто передан мусором; последнее подразумевает, что метод никогда не подходит для вызова этого экземпляра (в отличие от IllegalStateException , что подразумевает, что может быть уместно вызывать метод объекта иногда, но не в данный момент) .


Мне неизвестен общий перевод исключений на C # <=> Java.

57
ответ дан 26 November 2019 в 21:25
поделиться

Петар указал мне на этот пример кода (из 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, хотя оно говорит:

Вызывается, когда одновременно предпринимается действие когда виртуальная машина находится в неправильном состоянии.

И недопустимое состояние виртуальной машины определенно не является проблемой в приведенном выше справочном примере. Здесь проблема в том, что объект недействителен, потому что он ссылается на файл журнала, доступный только для чтения.

Мой собственный совет: просто определите собственное исключение, например

package com.pany.project;
public class InvalidOperationException extends RuntimeException {

   // add constructors with call to super as needed

}

. Для меня это намного проще, чем пытаться найти наиболее подходящее исключение из пакета java.lang .

3
ответ дан 26 November 2019 в 21:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: