Просто удалите throw
из блока catch - измените его на echo
или иным образом обработайте ошибку.
Это не говорит о том, что объекты могут быть выброшены только в блоке захвата, это говорит о том, что только объекты могут быть выброшены, и место ошибки находится в блоке захвата - есть разница .
В блоке catch вы пытаетесь выбросить что-то, что вы только что поймали - что в этом контексте в любом случае не имеет особого смысла - и то, что вы пытаетесь выбросить, - это строка.
Реальная аналогия того, что вы делаете, это поймать мяч, а затем попытаться выбросить логотип производителя в другое место. Вы можете бросить только целый объект, но не свойство объекта.