Php 从zend抛出错误

Php 从zend抛出错误,php,zend-framework,error-handling,zend-framework2,throw,Php,Zend Framework,Error Handling,Zend Framework2,Throw,我正在使用zend框架创建API。在zend框架中是否有抛出错误的机制 类似弗拉皮的东西 抛出新的Frapi_错误(“内部服务器错误”) 一种方法是抛出异常,捕获它并作为json响应返回。但这样我就必须在try-and-catch块中编写代码 人们通常用什么从zend抛出错误?zend Framework 2中没有专门的“错误处理机制”,将来也不会有。错误是一种异常,需要按此处理 既然您已经谈到了返回响应,那么我假设使用某种API。在这种情况下,你可能要检查出和使用的东西内的光泽。你可能想在Ma

我正在使用zend框架创建API。在zend框架中是否有抛出错误的机制

类似弗拉皮的东西

抛出新的Frapi_错误(“内部服务器错误”)

一种方法是抛出异常,捕获它并作为json响应返回。但这样我就必须在try-and-catch块中编写代码

人们通常用什么从zend抛出错误?

zend Framework 2中没有专门的“错误处理机制”,将来也不会有。错误是一种异常,需要按此处理

既然您已经谈到了返回响应,那么我假设使用某种API。在这种情况下,你可能要检查出和使用的东西内的光泽。你可能想在Matthews的文章中进一步阅读API主题


ZF2本身也将捕获所有异常,并最终在错误页面中返回它们。但实际上,任何时候都不应该向用户显示异常。因此,编写专用的
try/catch
语句并告诉用户如何解决问题是最好的方法。

如果需要,您可以创建自己的自定义异常类

   /**
 * Create a class to test the exception
 */
class TestException
{
    public $var;

    const THROW_NONE    = 0;
    const THROW_CUSTOM  = 1;
    const THROW_DEFAULT = 2;

    function __construct($avalue = self::THROW_NONE) {

        switch ($avalue) {
            case self::THROW_CUSTOM:
                // throw custom exception
                throw new MyException('1 is an invalid parameter', 5);
                break;

            case self::THROW_DEFAULT:
                // throw default one.
                throw new Exception('2 is not allowed as a parameter', 6);
                break;

            default: 
                // No exception, object will be created.
                $this->var = $avalue;
                break;
        }
    }
}


// Example 1
try {
    $o = new TestException(TestException::THROW_CUSTOM);
} catch (MyException $e) {      // Will be caught
    echo "Caught my exception\n", $e;
    $e->customFunction();
} catch (Exception $e) {        // Skipped
    echo "Caught Default Exception\n", $e;
}

您只能
抛出
异常,而不是错误。抛出异常,然后附加一个侦听器以捕获异常并向用户显示适当的消息我可以创建一个单独的类来侦听所有类的抛出异常并在将响应返回给用户之前调用该类吗?因为这样我就不必在所有类中都编写catch了。@BSThakrar,是的。你可以用。好的。谢谢我会试试这个,等待zend发布任何内置的错误处理机制。我喜欢为它创建一个类的想法。有没有什么方法可以让我不必在抛出异常的地方编写这个try/catch块?好的。谢谢,我试试这个。但您知道它是否支持DynamoDB吗?这和DBMS毫无关系。错误处理是应用程序的任务。