CakePhp自定义异常处理

时间:2015-07-20 16:14:49

标签: php cakephp exception-handling

我正在使用CakePHP,有时会出现问题,我会收到错误文本。

E.g。

$response = array(
            'error'=>true,
            'invalidKey'=>false,
            'message'=>ERROR_ACCOUNT_EXISTS,
            );

我有这段代码,并且说“ERROR_ACCOUNT_EXISTS”没有在任何地方定义。它应该抛出异常。

这是我得到的:

<pre class="cake-error"><a href="javascript:void(0);" onclick="document.getElementById('cakeErr55ad1d63b99ac-trace').style.display = (document.getElementById('cakeErr55ad1d63b99ac-trace').style.display == 'none' ? '' : 'none');"><b>Notice</b> (8)</a>: Use of undefined constant MESSAGE_REGISTRATION_SUCCESSFUL - assumed 'MESSAGE_REGISTRATION_SUCCESSFUL' [<b>APP/Controller/ApiController.php</b>, line <b>56</b>]<div id="cakeErr55ad1d63b99ac-trace" class="cake-stack-trace" style="display: none;"><a href="javascript:void(0);" onclick="document.getElementById('cakeErr55ad1d63b99ac-code').style.display = (document.getElementById('cakeErr55ad1d63b99ac-code').style.display == 'none' ? '' : 'none')">Code</a> <a href="javascript:void(0);" onclick="document.getElementById('cakeErr55ad1d63b99ac-context').style.display = (document.getElementById('cakeErr55ad1d63b99ac-context').style.display == 'none' ? '' : 'none')">Context</a><pre id="cakeErr55ad1d63b99ac-code" class="cake-code-dump" style="display: none;"><code><span style="color: #000000"><span style="color: #0000BB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'invalidKey'</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">false</span><span style="color: #007700">,</span></span></code><code><span style="color: #000000"><span style="color: #0000BB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'user'</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">$result</span><span style="color: #007700">[</span><span style="color: #DD0000">'User'</span><span style="color: #007700">],</span></span></code><span class="code-highlight"><code><span style="color: #000000"><span style="color: #0000BB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'message'</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">MESSAGE_REGISTRATION_SUCCESSFUL</span><span style="color: #007700">,</span></span></code></span></pre><pre id="cakeErr55ad1d63b99ac-context" class="cake-context" style="display: none;">$name = &#039;

我不想要这种HTML错误。

我尝试过try catch子句但结果是一样的。

我该如何处理这类错误?

1 个答案:

答案 0 :(得分:0)

ERROR_ACCOUNT_EXISTS

这是一个常量,如果没有定义,将导致致命的错误,而这似乎没有被捕获。见How do I catch a PHP Fatal Error

这也就像使用常量一样,它们不应该用于消息。技术上可行吗?是。好的做法?没有。如果不需要翻译,请使用CakePHP的翻译功能,或仅使用sting。

因此,不是捕捉致命错误,而是首先通过而不是使用常量来解决问题 - 或者在某处定义常量。致命错误应该修复而不是隐藏和解决。不修复致命甚至通知就像在腐烂的核心上面涂上一些颜色并被视为练习。