0

私がやろうとしているのは、すべてのエラーをキャッチすることであり、私は自分自身を処理します。

しかし、jQuery.ajax()でエラーが発生すると、エラーオプションでエラーが発生したかどうかを知ることができます。しかし、それは私のwindow.onerrorイベントではキャッチできません。

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";

});

ここでテストできます:http://jsfiddle.net/uHPXm/4/

4

2 に答える 2

0

エラー関数は、次の 3 つのパラメーターを受け入れます。error(jqXHR, textStatus, errorThrown)

jqXHR は XMLHTTPRequest オブジェクト、textStatus はtimeoutorなどの文字列abort、errorThrown は未加工のエラー メッセージ (見つからない、内部サーバー エラーなど) です。

必要に応じて、ドキュメントを読んでそのerror部分に移動し、詳細を読むことができます。

于 2012-11-08T20:10:11.977 に答える
0

document.onerror

ランタイム スクリプト エラーのイベント ハンドラー。

あなたの場合、スクリプトに実行時エラーはありません。スクリプトは問題ありませんが、リクエストにエラーがあります。基本的に、例外はまったくスローされません。jQueryの内部には次のようなものがあります(正確にはjqueryコードからのものではありませんが、似ています):

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)
}

基本的に、404 はブラウザの例外ではありません。

jQuery.ajaxErrorを確認してみてください。ajax リクエスト で発生したすべてのエラーがキャッチされます。

同時に、window.onerror設定するとキャッチされるエラーがスローされる場合が$.ajax({... dataType:'json'...})あり、応答で HTML を取得します (応答の解析中にエラーが発生します)。

于 2012-11-08T20:11:06.967 に答える