Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePhp自定义异常处理_Php_Cakephp_Exception Handling - Fatal编程技术网

CakePhp自定义异常处理

CakePhp自定义异常处理,php,cakephp,exception-handling,Php,Cakephp,Exception Handling,我正在使用CakePHP,有时会出现一些错误,我会收到一堆错误文本 例如 我有这个代码,假设ERROR\u ACCOUNT\u EXISTS没有在任何地方定义。它应该抛出一个异常 以下是我得到的: <pre class="cake-error"><a href="javascript:void(0);" onclick="document.getElementById('cakeErr55ad1d63b99ac-trace').style.display = (document

我正在使用CakePHP,有时会出现一些错误,我会收到一堆错误文本

例如

我有这个代码,假设ERROR\u ACCOUNT\u 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;
:使用未定义的常量MESSAGE\u REGISTRATION\u SUCCESSFUL-假定“MESSAGE\u REGISTRATION\u SUCCESSFUL”[APP/Controller/ApiController.php,第56行]
“invalidKey”=false,
“user”=$result[“user”],
“MESSAGE”=MESSAGE\u REGISTRATION\u SUCCESSFUL,$name='; 我不希望出现这种html错误

我试过try-catch子句,但结果是一样的

我如何处理这些错误

ERROR_ACCOUNT_EXISTS
这是一个常量,如果未定义,将导致一个致命错误,而该错误似乎未被捕获。看

此外,这听起来像是常数的一个非常糟糕的用法,它们不应该用于消息。技术上可行吗?对良好做法?不需要。如果不需要翻译,可以使用CakePHP的翻译功能,或者只使用sting


因此,我不会捕捉致命错误,而是首先通过不在此处使用常量或在某处定义常量来解决问题。致命错误应该修复,而不是隐藏和解决。不修正命运,甚至不修正通知,就像给腐烂的核心涂上颜色一样,被认为是不好的做法。

我不确定我是否理解你的问题。您是否有问题,想抛出一个特殊异常?如果是,为什么不这样说呢?好吧,这会产生一个HTML
500
状态,所以你可以像处理任何
500
()一样处理它。这些新页面仅在debug设置为
0
时才会显示。这不是我的问题,是的,我知道问题所在,我本可以解决问题,但是我想问的是,是什么导致了这堵文本墙,如果出现任何异常错误,如何捕获它而不发送它。这个异常很可能会导致我的应用程序崩溃,为了避免它,我必须捕获这个错误。另外,我不能硬编码字符串,因为每个字符串可以在很多地方使用。在这里什么是好的练习?我完全不同意。认真地问原因是什么?错误的代码。修好它。从php文档中可以看出:“这些表示无法从中恢复的错误,例如内存分配问题。脚本的执行已停止。”这在任何情况下都不应该发生。特别是给定的一个问题是如此明显且易于修复:声明您的常量。是的,我将删除该变量,但它只是用于示例。然而我问了一个简单的问题,我如何处理这个该死的异常,我不希望它发生在任何其他问题上,因为它可能会导致整个应用程序出现故障。
ERROR_ACCOUNT_EXISTS