Дело в том, что если передаваемые аргументы не соответствуют сигнатуре функции/метода, то это исключительная ситуация (иначе зачем разработчик указывал бы хинт для аргумента) при возникновении которой приложение должно падать.
Нужно сделать эту ситуацию не исключительной.
Можно вообще убрать хинт и проверять аргумент уже внутри функции/метода, иди проверять/приводить его в соответствие до вызова функции.
Ну и в РНР7 вроде бы как такая ошибка выдаст TypeError исключение, которое можно просто перехватить и обработать так, как тебе нравится.