从1.1.3升级到1.4.2当Breeze尝试解析HTML格式的responseText而不是JSON时,我一直在获取未捕获的JS错误。在1.1.3版本中,代码包含在try / catch中,捕获解析错误。在“JSON.parse(XHR.responseText)”上抛出错误。但是因为它被抓住了,所以效果很好。错误消息会冒泡到调用者。
var err = new Error();
err.XHR = XHR;
err.message = XHR.statusText;
err.responseText = XHR.responseText;
err.status = XHR.status;
err.statusText = XHR.statusText;
if (err.responseText) {
try {
var responseObj = JSON.parse(XHR.responseText);
err.detail = responseObj;
if (responseObj.ExceptionMessage) {
err.message = responseObj.ExceptionMessage;
} else if (responseObj.InnerException) {
err.message = responseObj.InnerException.Message;
} else if (responseObj.Message) {
err.message = responseObj.Message;
} else {
err.message = XHR.responseText;
}
} catch (e) {
}
}
return err;
在1.4.2中没有try / catch,我得到了一个未被捕获的错误。我不知道自己是不是应该抓住这个。我在之前的版本中没有做任何事情。
function extractErrors(XHR) {
if (!XHR.responseText) return null;
var responseObj = JSON.parse(XHR.responseText);
return responseObj && responseObj.EntityErrors;
}
由于
答案 0 :(得分:0)
我会升级到Breeze的最新版本,现在是1.4.6。这个版本在新的HttpResponse对象周围有一个try / catch,它是XHR的包装器。