Как вызвать ошибку в Java?

все, что я сделал в гугле, похоже, сосредоточено на" ловле " ошибок. Я хочу быть в состоянии поднять свой собственный, если выполняются определенные условия. Я попытался использовать класс Error () и его подклассы, но Eclipse их не распознает.

вот что я хочу сделать:

if(some_condition) {
    foobar();
}
else {
    // raise an error
}

глупый вопрос, я знаю, но я сделал свой поиск в гугле, и я думаю, что кто-то там сможет мне помочь.

спасибо заранее!


спасибо всем! Если ты ... читая это в будущем, вот выжимки:

  1. ошибки в Java относятся к проблемам, которые вы не должны пытаться поймать

  2. исключения относятся к ошибкам, которые вы можете захотеть поймать.

вот мой "фиксированный" код:

if(some_condition {
    foobar();
}
else {
    throw new RuntimeError("Bad.");
}

Я RuntimeError() потому что, как указал один ответ, мне не нужно объявлять, что я бросаю ошибку заранее, и поскольку я полагаюсь на условие, это очень полезный.

спасибо всем!

5 ответов


здесь вы идете:

throw new java.lang.Error("this is very bad");

более идиоматично, чтобы бросить подкласс исключения. RuntimeException, в частности, не установлен (например, методы не должны объявлять, что они могут бросить его). (Ну, так и ошибка, но она должна быть зарезервирована для неустранимых вещей).

throw new java.lang.RuntimeException("this is not quite as bad");

Примечание: На самом деле вам не нужно создавать их прямо в этот момент. Вы можете бросить готовые. Но одно хорошо о их построения они записывают линии код, на котором они были, и полный стек вызовов, который произошел во время построения, и поэтому создание нового, когда вы бросаете его, вводит его с очень полезной диагностической информацией.


попробуйте создать исключение:

public void yourMethod() throws Exception {
    if (some_condition) {
        foobar();
    }
    else {
        throw new Exception("Something bad happened.");
    }
}

ошибка в Java называется Exception (посмотреть этот).

if(some_condition){
   foobar();
} else {
   throw new Exception();
}

формально ошибка-это любой класс, который простирается от Throwable.

класс Throwable является суперклассом всех ошибок и исключений в язык Java. Только объекты, являющиеся экземплярами этого класса (или один из его подклассов) брошены виртуальной машиной Java или могут быть брошенным инструкцией Java throw. Аналогично, только этот класс или один из его подклассов может быть типом аргумента в предложении catch. Для цели проверки времени компиляции исключений, Throwable и любых подкласс Throwable, который также не является подклассом RuntimeException или Error рассматриваются как проверенные исключения.

...

https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html


вы пытаетесь вызвать ошибку только в консоли? Или вы пытаетесь показать пользователю ошибку?

в этом случае вы можете использовать JOptionPane для создания диалогового окна ошибки.


Не нужно чувствовать себя глупо :-) Вы можете создать собственное исключение, например,

public class UnknownUnitException extends Exception{
    private String message = null;
    public UnknownUnitException() {
        super();
    }
    public UnknownUnitException(String message) {
        super(message);
        this.message = message;
    }
    public UnknownUnitException(Throwable cause) {
        super(cause);
    }
    @Override
    public String toString() {
        return message;
    }
    @Override
    public String getMessage() {
        return message;
    }
}

Я бы рекомендовал урок: исключения в учебниках Java