*
а какое то одно. И проверял бы количество возвращённых записей.INSERT .... ON DUPLICATE KEY UPDATE ...
. throw new Exception();
это вы выбрасываете исключение. То есть формируете сообщение о какой то нештатной ситуации. Если же вы его выбрасываете, то вполне логично вы как то готовы его обработать и сказать приложению что делать в случае если такая ситуация произошла. Так вот вы этого НЕ делаете. :) Подробнее написано тут https://www.php.net/manual/ru/language.exceptions.php.