让我们假设我的 httphandler (.ashx) 中有以下方法:
private void Foo()
{
try
{
throw new Exception("blah");
}
catch(Exception e)
{
HttpContext.Current.Response.Write(
serializer.Serialize(new AjaxError(e)));
}
}
[Serializable]
public class AjaxError
{
public string Message { get; set; }
public string InnerException { get; set; }
public string StackTrace { get; set; }
public AjaxError(Exception e)
{
if (e != null)
{
this.Message = e.Message;
this.StackTrace = e.StackTrace;
this.InnerException = e.InnerException != null ?
e.InnerException.Message : null;
HttpContext.Current.Response.StatusDescription = "CustomError";
}
}
}
当我$.ajax()
调用该方法时,我将在success
回调中结束,无论后端是否出现问题,我最终都会进入catch
块中。
我对 ajax 方法进行了一些扩展以规范错误处理,因此无论是“jquery”错误(解析错误等)还是我的自定义错误,我都会在错误回调中结束。
现在,我想知道的是,我应该添加类似
HttpContext.Current.Response.StatusCode = 500;
最终出现在 jQuerys 错误处理程序中,或者我应该处理我的
HttpContext.Current.Response.StatusDescription = "CustomError";
在 jqXHR 对象上,并假设它在那里出现错误?
如果有不清楚的地方,请告诉我。