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

标签 php exception error-handling

我在下面遇到了这个函数,我想知道这是否是使用 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;
}

最佳答案

在代码方面它是正确的/有效的,但是 try-catch 的强大之处在于,当您正在调用的某个函数中从深处抛出异常时。
因为“停止执行中间函数并一直跳回到 catch block ”。

在这种情况下,没有深层异常,因此我会这样写:
(假设在 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;
}

我觉得它更具可读性。

关于php - 使用 throw try catch 错误处理的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765173/

相关文章:

php - 如何将具有 200,00 行的巨大 CSV 文件导入 MySQL(异步且快速)?

Php mktime() 与日期()

java - 为什么异常有时需要用 try/catch 包围?

c++ - 在 C++ 或 C++11 中重新抛出类型化异常

.net - 有没有类似 : Try Until? 的东西

java - 我收到了我的第一个异常(exception)。现在我该怎么办?

swift - 如何为 completionHandler 引发错误?

php - IOS Web 服务推荐

c# - 线程池线程抛出的异常显示为未处理

php - Javascript/jQuery 是否有内置方法或插件来检查所有表单数据的值/名称?