Как выбросить исключение в java
Перейти к содержимому

Как выбросить исключение в java

  • автор:

Как бросить исключение java

Для бросания исключения в Java нужно использовать оператор throw . Он позволяет явно сгенерировать исключение в любом месте кода.

public void divide(int a, int b) throws ArithmeticException  if (b == 0)  throw new ArithmeticException("Деление на ноль"); > int result = a / b; System.out.println("Результат: " + result); > 

В этом примере мы проверяем, равен ли делитель b нулю, и если да, то мы бросаем новое исключение типа ArithmeticException с сообщением «Деление на ноль».

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

Как пробросить исключение java

Чтобы пробросить исключение в Java, необходимо использовать оператор throw . Метод, выбрасывающий исключения должен быть помечен оператором throws :

class MyException extends Exception  public MyException(String message)  super(message); > > public class App  public static void main(String[] args)  try  func(); > catch (MyException exception)  System.out.println(exception.getMessage()); // => Ошибка! > > public static void func() throws MyException  throw new MyException("Ошибка!"); > > 

Как на Java передать исключение наверх?

Throwable это базовый класс, от котрого наследуются остальные исключения. Возможно правильнее как раз перехватывать отдельно Exception и Error, наследуемые от Throwable. Вообще см. оригинал.

17 окт 2012 в 13:46

— Throwable, насколько мне известно, имеет смысл перехватывать только в том случае, если у метода должна быть настоящая strong nothrow guarantee по контракту и, в общем, стоит сто раз подумать перед тем, как делать это. — Поскольку Throwable включает в себя множество исключений, не предусматривающих graceful восстановления (типа OutOfMemoryException ), то, в общем, необходимость их перехвата представляется сомнительной.

17 окт 2012 в 14:05

@avp, мне хотелось бы увидеть действия при отловле Error(обработка, при возникновении ошибки), возникновение которого обычно садит весь jvm. Отлавливать Error считаю неразумным.

17 окт 2012 в 21:34

@Viacheslav, если не хотите обрабатывать, киньте дальше try < . >catch (Throwable t) < if (t instanceof Error) throw t; . >или если Вы считаете вообще неразумным ловить Error, то не ловите Throwable, а только Exception. Конечно, если в Вашей программе что-то унаследовано от Throwable кроме Error и Exception, то ловите и эти новые исключения. (еще раз, см. документацию по Java (в моем преыдущем комментарии)).

Как выбросить исключение в java

Это пожалуй, мой любимый автор из всех! Очень понятно и доходчиво объясняет, каждый раз когда вижу этого автора сразу понимаю «О, щас буду годноту читать» и конечно-же под каждой статьей ставлю лайк. Автору удачи и спасибо за статьи!

Борис Уровень 14
19 февраля 2024

Для меня так и осталось загадкой использование throw. Почему мы в одних случаях пишем throw в самом коде метода, а иногда throws в его сигнатуре. Это одно и то же или нет?

Pavel Уровень 2 Expert
17 февраля 2024

Автору спасибо за статью! Мне кажется, что было бы полезно дополнить её такими кейсами, как, например: * Выброс исключения внутри одного из catch блоков, отработает ли в таком случае блок finally? * Или отработает ли finally, если внутри catch вызвать return? Кому интересно, ответ — да, отработает. А так же дополнить примерами, в каких ситуациях finally всё же не отрабатывает (да, такие есть). Например, вызов:

 System.exit(0); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *