@QNA-1976

Как понять такое описание?

Не надо располагать try/catch и throw на одном уровне — в этом случае проще написать if:

try {
    ... 
    throw new Exception(...);
    ...
} catch (Exception $e) {
    ...
}

Поясните, пожалуйста:
в этом случае проще написать if
, если можно с примером.
  • Вопрос задан
  • 321 просмотр
Решения вопроса 2
@McBernar
Это значит, что throw должно кидаться из вложенного уровня.

В try идет, например, вызов функции, которая может выкинуть эксепшен. В catch этот эксепшен ловится. Эксепшены поднимаются наверх.

В вашем случае throw кидается непосредственно из try, что теряет всякий смысл. Это имеет смысл только в том случае, если этот блок try-catch сам находится в функции и хочет пробросить ошибку на уровень выше, но тогда здесь не нужен catch.
Ответ написан
DevMan
@DevMan
исключения не выбрасываются просто так, они выбрасываются при каких–то условиях.
try {
	if(! file_exists($file)) {
		throw new Exception('file not exist');
	}
} catch (Exception $e) {
	echo $e->getMessage();
  exit;
}
не имеет смысла, поскольку спокойно сокращается до
if(! file_exists($file)) {
	exit('file not exist');
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Никак не надо понимать.
Автор сам плохо понимает, о чем пишет.

Располагать на одном уровне абсолютно нормально, у него выше куча таких примеров.

Исключение работает как локальный die. Или даже скорее return. То есть код после него исполняться не будет. То есть вместо кучи вложенных иф можно делать кучу throw. Ну в общем получить такой аналог goto :catch.

Но проще всего конечно спросить у самого автора, что он имел в виду, благо это гитхаб, а не бумажная книжка. Создать issue это два клика
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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