Ответ 1
Вы не сможете напрямую делать 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);
}