Intereting Posts
Метод (например, через скрипт bash), чтобы превратить индексы php-массива в настоящее время с использованием констант в индексы массивов с использованием одинарных кавычек? Получить комментарии в php-файле Получить номер недели между двумя датами в php Как разрабатывать, подделывая логин для тестирования ACL в Symfony 2 Проблемы с кодировкой с помощью XMLWriter (PHP) PDO SQLite запрос с нулевым результатом Проблемы с проверкой наличия или отсутствия таблицы в db Добавление полей ввода в форму при выборе выпадающего меню Как вы включаете несколько страниц в один файл с включенным php? Вызов функции PHP из Java PHP: LightOpenID, как получить данные учетной записи от поставщика? Как загрузить изображения в Codeigniter? PDO Connection и абстрактный класс Как преобразовать строку, которая выглядит как шестнадцатеричный номер, в фактический шестнадцатеричный номер в php? Как правильно настроить переменную среды PHP для запуска команд в Git Bash

Есть ли статический способ бросить исключение в php

Есть ли «статический» способ выброса исключения в php?

Мне нужно создать исключение, когда запрос mysql завершится с ошибкой.

Я попробовал это:

$re=@mysql_query( $query ) or throw new Exception(' Query Failed '); 

но он не работает.

И я использую функцию, основанную на функции throwException() из этого комментария в руководстве PHP: Исключения , но я хотел бы знать, есть ли статический способ сделать это, не делая класс.

Вы не сможете напрямую делать or throw new Exception(); потому что throw – это утверждение, а не выражение. Так как or действительно является оператором, он ожидает, что его операнды будут выражением (вещи, которые оценивают некоторые значения).

Вы должны сделать это вместо этого:

 $re = mysql_query($query); if (!$re) { throw new Exception('Query Failed'); } 

Если вы пытаетесь использовать throwException() предложенную в этом комментарии к PHP-руководству, поскольку webbiedave указывает, что комментарий говорит о том, что вам нужно вызвать эту функцию вместо оператора throw напрямую, например:

 $re = mysql_query($query) or throwException('Query Failed'); 

На PHP нет правила, в котором говорится, что вам нужно выкидывать исключения из метода класса. Пока есть какой-то способ поймать это исключение, все в порядке. Если вы имеете в виду, что хотите исключать исключения, не используя класс Exception , вам нужно. Исключения представляют собой объекты по своей природе; вы не можете генерировать исключение, которое не является объектом (или не наследуется от класса Exception ).

Если вы не хотите генерировать исключения, но повышаете ошибку, которую часто видят из PHP (уведомления, предупреждения и фатальные ошибки), используйте trigger_error() .

 $re = mysql_query($query); if (!$re) { trigger_error('Query Failed', E_USER_ERROR); } 

Комментарий, который вы указываете, указывает на то, что выброс исключения таким образом не будет работать. В нем говорится, что вы должны поместить его в функцию:

 function throwException($message = null, $code = null) { throw new Exception($message, $code); } $re = mysql_query($query) or throwException('Query Failed'); 

Вы также можете попробовать что-то вроде

 mysql_query($query); if (mysql_error()) { throw new Exception(...); } 

поскольку mysql_error() возвращает пустую строку, если не было ошибки, которая вычисляется как false .