我知道问题的标题不是很客观,但很难解释我的情况。事实是,我想创建一种方法,我可以使用$.post
调用处理所有可能的错误,因此我可以根据情况向用户提供正确的消息。
我有一些函数返回JSON对象作为结果。如果在我的应用程序中抛出错误,则会生成状态代码500,从而使我能够轻松捕获并处理此错误。但是如果发生运行时错误(例如,尝试在空对象上执行方法),那么PHP不会引发500错误,它只显示错误消息,给出200状态并执行执行。我试图模拟这个错误,看看如何最好地处理它,但我没有想法。
我有这段代码:
$(function() {
$('#update_marker').submit(function(e) {
e.preventDefault();
$.post($("#update_marker").attr("action"), $("#update_marker").serialize(), function(data, textStatus, jqXHR) {
var json = $.parseJSON( data );
if( json.status=="success" ) {
new Messi( json.msg );
} else {
new Messi( json.msg, {title: 'Ops..', titleClass: 'anim error', buttons: [{id: 0, label: 'Fechar', val: 'X'}]});
}
}).fail( function(jqXHR, textStatus, errorThrown) { general_error(); } );
return false;
});
});
因此,在我调用的方法中,我将一些代码(如$nullobj->method();
)用于模拟意外故障。我得到的是下面的结果,状态代码= 200(OK)。
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined variable: nullobj</p>
<p>Filename: controllers/map.php</p>
<p>Line Number: 140</p>
</div><br />
<b>Fatal error</b>: Call to a member function method() on a non-object in <b>D:\xampp\htdocs\xumb\application\controllers\map.php</b> on line <b>140</b><br />
这将导致我的jQuery代码将此处理为Success并且无法解析JSON对象,因此不向用户显示任何内容。在某些情况下,执行甚至不会在错误处停止,并且返回的JSON将在那里,但在页面的底部,无法访问。我可以检查返回的对象以查看它是否是JSON,但它比这更多 - 我认为。
答案 0 :(得分:0)
您可以创建自己的PHP错误处理程序。然后,您可以在某些错误或任何错误上返回状态500。 请参阅此帖子:How can I get php to return 500 upon encountering a fatal exception?