是否可以在mysql查询结束时使用异常而不是die()?我想抛出异常并记录它而不是杀死脚本。
是否可以这样做:
mysql_query(...) or throw new exception()??
答案 0 :(得分:1)
这是我通常这样做的方式。我将数据库放在包装器类中,因此$this
只是引用包装器。
private function throwException($query = null)
{
$msg = mysql_error().". Query was:\n\n".$query.
"\n\nError number: ".mysql_errno();
throw new Exception($msg);
}
public function query($query_string)
{
$this->queryId = mysql_query($query_string);
if (! $this->queryId) {
$this->throwException($query_string);
}
return $this->queryId;
}
为我打包一个很好的错误消息,所以我可以看到问题查询。当然,你可以保持简单,并且做到:
mysql_query($sql) or throw new Exception("Problem with query: ".$sql);
答案 1 :(得分:0)
是。您几乎可以在传统上使用die/exit
的任何地方使用例外。
答案 2 :(得分:0)
是的,您可以抛出异常而不是杀死脚本。
答案 3 :(得分:0)
您的代码可以正常使用:
mysql_query(...) or throw new Exception("Failed to run query");
但它使用的速记并不完全清楚。我个人认为你最好为了清晰而牺牲简洁:
if (false === mysql_query(...)) {
throw new Exception("Failed to run query.");
}
请记住,抛出异常仅在您将其捕获到某处时才有用,在您的情况下,您可能希望使用自定义异常:
class DatabaseException extends Exception {}
try {
if (false === mysql_query(...)) {
throw new DatabaseException("Failed to run query.");
}
} catch (DatabaseException $e) {
$logger->log("Database exception: " . $e->getMessage());
}
希望有所帮助!