使用throw try catch错误处理的正确方法

san*_*ers 4 php error-handling exception

我已经遇到了下面这个函数,我想知道这是使用try/catch错误处理的正确方法.

public function execute()
{
    $lbReturn = false;
    $lsQuery = $this->msLastQuery;
    try
    {
        $lrResource = mysql_query($lsQuery);

        if(!$lrResource)
        {
            throw new MysqlException("Unable to execute query: ".$lsQuery);
        }
        else
        {
            $this->mrQueryResource = $lrResource;
            $lbReturn = true;
        }

    }
    catch(MysqlException $errorMsg)
    {
        ErrorHandler::handleException($errorMsg);
    }
    return $lbReturn;
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*ams 5

不会.在这种情况下抛出异常只是一个GOTO,但有一个(稍微)更漂亮的脸.


Bob*_*ger 5

Codewise它是正确的/有效的,但try-catch的强大之处在于,当你正在调用的函数之一从内向下抛出异常时.
因为"停止执行中功能并一直跳回到catch块".

在这种情况下,没有深度异常,因此我会这样写:(
假设ErrorHandler中有一个函数"handleErrorMessage".)

public function execute() {
    $lsQuery = $this->msLastQuery;
    $lrResource = mysql_query($lsQuery);

    if(!$lrResource) {
         ErrorHandler::handleErrorMessage("Unable to execute query: ".$lsQuery);
         return false;
    }
    $this->mrQueryResource = $lrResource;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我觉得哪个更具可读性.