Как выбросить RuntimeException («не удается найти символ»)

Я пытаюсь создать исключение в моем коде вот так:

throw RuntimeException(msg);

Но когда я встраиваю NetBeans, я получаю следующую ошибку:

C:\....java:50: cannot find symbol
symbol  : method RuntimeException(java.lang.String)
location: class ...
        throw RuntimeException(msg);
1 error

Нужно ли мне что-то импортировать? Я неправильно написала? Я уверен, что должен делать что-то глупое: - (

32
задан Raedwald 5 September 2013 в 12:15
поделиться

6 ответов

throw new RuntimeException (msg);

Вам нужен новый там. Он создает экземпляр и бросает его, а не вызывает метод.

105
ответ дан 27 November 2019 в 19:38
поделиться

вам нужно будет создать его экземпляр перед тем, как выбросить

throw new RuntimeException(arg0) 

PS: Интересно, что в среде IDE Netbeans уже должна была быть указана эта ошибка времени компиляции

6
ответ дан 27 November 2019 в 19:38
поделиться

Исключение представляет собой объект , как и любой другой объект в Java. Вам необходимо использовать ключевое слово new , чтобы создать новое исключение , прежде чем вы сможете выбросить его.

throw new RuntimeException();

При желании вы также можете сделать следующее:

RuntimeException e = new RuntimeException();
throw e;

Оба фрагмента кода эквивалентны.

Ссылка на учебные пособия для полноты картины.

35
ответ дан 27 November 2019 в 19:38
поделиться
throw new RuntimeException(msg); // notice the "new" keyword
4
ответ дан 27 November 2019 в 19:38
поделиться

Вам необходимо создать экземпляр RuntimeException, используя new так же, как если бы вы создавали экземпляры большинства других классов:

throw new RuntimeException(msg);
3
ответ дан 27 November 2019 в 19:38
поделиться

Как все уже сказали, инстанцируйте объект, прежде чем бросать его.

Хотел добавить еще кое-что; невероятно редко бросается RuntimeException. Было бы нормально, если бы код API выбрасывал подкласс этого класса, но обычно код приложения выбрасывает Exception или что-то, что расширяет Exception, но не RuntimeException.

И, оглядываясь назад, я пропустил добавление причины почему вы используете Exception вместо RuntimeException; @Jay, в комментарии ниже, добавил полезную часть. RuntimeException не является проверяемым исключением;

  • В сигнатуре метода не обязательно объявлять, что может быть брошен RuntimeException.
  • Вызывающие метод не обязаны ловить исключение или подтверждать его каким-либо образом.
  • Разработчики, которые впоследствии попытаются использовать ваш код, не смогут предвидеть эту проблему, если не будут внимательно смотреть, и это увеличит нагрузку по сопровождению кода.
15
ответ дан 27 November 2019 в 19:38
поделиться
Другие вопросы по тегам:

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