правильно ли выбрасывать исключение, если у метода задано возвращаемое значения ? Могут ли быть ошибки ?
Например:
function getId() : int {
if(туда-сюда) { ... return $id; }
throw new Exception();
}
Таким образом можно выбрасывать исключения. Будем рассматривать на вашем примере. Выполнение не прошло условную конструкцию 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.
:)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишу на Java Spring и постоянно натыкаюсь на проблему того, что не понимаю в каком случае проект необходимо перекомпилировать, а в каком не нужно
У меня не отображаются ошибки, которые я вписал в BindResultrejectValue(
Хочу посмотреть как работают и из чего состоят реальные проектыТо-есть меня интересует не именно исходники на гитхабе(там я всеравно ничего...