我正在为一个小型PHP应用程序创建一个模型。这将利用PDO与MySQL服务器进行通信。我已经理解推荐的错误模式是抛出异常的模式,因为它允许优雅的错误处理。但我不明白我应该如何处理这些例外?
从技术上讲,这很简单,但让我举个例子:
class Model()
{
private $host = "localhost",
$user = "",
$pass = "",
$DBH;
function __construct()
{
try
{
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(PDOException $e)
{
error_log($e->getMessage());
}
}
}
如果我在控制器中创建一个对象模型,但它失败了,我无法在我的控制器中处理它,对吧?或者当我创建该对象时会发生什么,“新模型”返回false?
请原谅我是一名新手,但我希望能够处理模型中其他功能的任何异常。我该怎么办呢?我需要能够知道控制器中是否出现了问题,并且能够在那里做适当的事情。
答案 0 :(得分:1)
如果您希望控制器也捕获异常,则可以在记录后始终重新抛出它。
class Model()
{
...
function __construct()
{
try
{
...
}
catch(PDOException $e)
{
error_log($e->getMessage());
throw $e;
}
}
}
答案 1 :(得分:0)
完全取决于error_log函数的功能。
您可以返回例外。 您可以在记录错误后死亡(假设您的应用程序无法访问数据库,则无法恢复正常)。 您可以通过throw();
返回自定义异常这真的只是你的偏好。