抛出zend的错误

时间:2013-12-31 08:49:44

标签: php zend-framework error-handling zend-framework2 throw

我正在使用zend框架创建API。有什么机制可以在zend框架中抛出错误吗?

像Frapi这样的东西

抛出新的Frapi_Error('内部服务器错误');

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

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

2 个答案:

答案 0 :(得分:0)

Zend Framework 2中没有专门的“错误处理机制”,也不会有一个。错误是Exception,需要这样处理。

既然你已经谈到了返回响应,我假设某种API。在这种情况下,您可能需要查看zfcamput\ZF\ApiProblem以及在闪亮Apigility内使用该内容。您可能希望进一步阅读Matthews的帖子中的API主题

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

答案 1 :(得分:0)

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

   /**
 * 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;
}