捕获jQuery ajax异常的问题

捕获jQuery ajax异常的问题,jquery,ajax,Jquery,Ajax,我想做的是抓住所有的错误,我自己处理 但是当jQuery.ajax()上出现错误时,我可以知道错误选项上是否有错误。但我的window.OneError事件无法捕捉到它 window.onerror = function(e) { console.log("i was here! ERROR: ", e); console.log("-----------"); return true; //dont show errors on console } $(functio

我想做的是抓住所有的错误,我自己处理

但是当jQuery.ajax()上出现错误时,我可以知道错误选项上是否有错误。但我的window.OneError事件无法捕捉到它

window.onerror = function(e) {
    console.log("i was here! ERROR: ", e);
    console.log("-----------");
    return true; //dont show errors on console
}

$(function() {

    $.ajax({
        url: "asdasdasd/as/da/sdtest/asdasd",
        error: function() {
            // ok i know here is an error and it catches on my window.onerror. BUT look at your console, still have a GET error. That error I want to handle. Can be with try/catch or inside the window.onerror. I want that Exception object. Not this one that I created.
            throw new Error("it catches, but still have errors on my console");
        }
    });

    test[0].test = "it fails";

});

您可以在这里测试:

错误函数接受三个参数,
error(jqXHR、textStatus、errorshown)

jqXHR是XMLHTTPRequest对象,textStatus是字符串,例如
超时
中止
,而ErrorRown是原始错误消息,例如找不到或内部服务器错误

如果您愿意,您可以直接阅读
错误部分,并阅读更多相关内容。

运行时脚本错误的事件处理程序

在您的情况下,脚本中没有运行时错误。脚本可以,但请求中有一些错误。基本上,不会抛出任何异常。在jQuery内部会有类似的内容(它不是完全来自jQuery代码,但它将是类似的):

基本上,404并不是浏览器的例外

你可以试试看 它将捕获ajax需求中发生的所有错误


同时,如果您设置
$.ajax({…数据类型:'json'.})
并在响应中获得HTML(解析响应时会发生错误),它可能会抛出一个错误,该错误将被
窗口.onerror
捕获。

您希望得到什么?不,我在这里!错误:未捕获错误:它捕获,但在我的控制台上仍有错误
?或者什么?你看到了吗:获取404(未找到)。这就是我想在window.onerror或try/catch中处理的问题。我需要异常对象。堆栈中存在此错误。我想得到StackTrace。使用我的错误函数抛出新的错误,我不能
xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState != 4) return

  if (xmlhttp.status == 200) {
      // Everything is ок
      ...
      alert(xmlhttp.responseText);
      ...
  } else {
      handleError(xmlhttp.statusText) // Something went wrong, error handler called
  }
}

xmlhttp.send();


function handleError(message) {
      alert("Error: "+message)
}