Выбрасывать исключение в методах с указанным возвращаемым типом

133
23 июня 2021, 00:10

правильно ли выбрасывать исключение, если у метода задано возвращаемое значения ? Могут ли быть ошибки ?

Например:

function getId() : int {
   if(туда-сюда) { ... return $id; }
   throw new Exception();
}
Answer 1

Таким образом можно выбрасывать исключения. Будем рассматривать на вашем примере. Выполнение не прошло условную конструкцию if и дальше по коду идет throw new Exception(), тип возвращаемого значения функции :int. Т.е. когда мы выбросили исключение - означает что процесс который выполнялся до, нам не интересен => нам уже не важно функция ли это или нет, возвращаемый тип, или что-то иное; У нас появляется задача "поймать" это исключение и обработать его как нужно. Можно предстваить, что при выбросе исключения дается выбор: Обрабатывать исключение, абстрагируясь от предидущего кода, или же вернуть другой "неожиданный" результат.

function foo($bar): int
{
    if($bar)
        return 1;
    throw new Exception();
}

Далее уже "системный код" поймает исключение и скажет что оно было выброшено и укажет причину такого поведения, он забудет о том что выполнялась функция foo и будет поступать по иным инструкциям(Аналог этого можно привести ЧП, случившаяся в городе, и все люди вместо того чтобы им вернуться домой вынуждены выполнять другие действия catch "системный код", забыв про дом foo).

Еще один пример с тем как указать инструкции выполнения при исключении и вернуть все таки долгожданный int:

function foo($bar): int
{
    try {
        if($bar)
        return 1;
        throw new Exception();
    } catch($e Exception) {
        return 0;
    }
}

Во втором случае мы указываем инструкции по исполнению и можем продолжить выполнение и возврат значения из функции(Случилась ЧП, но мы все равно пошли домой, и вернулись)ю

P.S.: "системный код" - код языка С, в который интерпретируется php.

:)

READ ALSO
Нужно ли пересобирать maven проект при изменении файла application.properties?

Нужно ли пересобирать maven проект при изменении файла application.properties?

Пишу на Java Spring и постоянно натыкаюсь на проблему того, что не понимаю в каком случае проект необходимо перекомпилировать, а в каком не нужно

101
как редактировать class

как редактировать class

просто как в текстовом редакторетолько с компиляцией декомпиляцией

172
Отображение ошибок с помощью BindingResult в Thymeleaf форме при redirect

Отображение ошибок с помощью BindingResult в Thymeleaf форме при redirect

У меня не отображаются ошибки, которые я вписал в BindResultrejectValue(

160
Spring Framework реальные приложения

Spring Framework реальные приложения

Хочу посмотреть как работают и из чего состоят реальные проектыТо-есть меня интересует не именно исходники на гитхабе(там я всеравно ничего...

109