2015-12-10 52 views
0

背景:我來自Python世界,其中一個try://except:完全處理異常,即我可以控制捕獲異常時輸出的內容。儘管被捕獲,爲什麼會記錄異常?

我想提出一個AJAX調用可能無法使用的API:

function updateAPI() { 
    getAPI() 
      .done(function (r) { 
       console.log('got API response: ' + JSON.stringify(r)); 
       updateFromAPI(r); 
      }) 
      .fail(function (r) { 
       console.log('failed to get API response: ' + r); 
      } 
      ); 
} 

function getAPI() { 
    return $.ajax({ 
     type: 'GET', 
     url: 'http://127.0.0.1:8081/api' 
    }); 
} 

我期待讓我發送到控制檯的兩個消息之一,這一點。控制檯,但也顯示出實際的錯誤,由JS記錄:

Failed to load resource: net::ERR_CONNECTION_REFUSED (16:11:45:867 | error, network) 
    at http://127.0.0.1:8081/api 
failed to get API response: [object Object] (16:11:45:868) 

這是冗長正常嗎?

第二行顯示我發現了錯誤(我不知道如何正確顯示)。

+0

JavaScript有try/catch語句和執行console.log()。但是,您的代碼不使用異常,並且您的控制檯消息不是來自console.log()調用。 –

+0

如上所述,這是Chrome輸出附加錯誤信息。 在Firefox中,您不會看到第一個文件,只是.fail()文本。 –

回答

0

根據the doc

jqXHR.fail(功能(jqXHR,textStatus,errorThrown){});

爲失敗的請求參數是相同.fail的():在jqXHR對象,textStatus和errorThrown

這樣做console.log('failed to get API response: ' + r);你只登錄了xhr對象(即[object Object])。

嘗試:

.fail(function (r, textStatus, errorCode) { 
    console.log('failed to get API response: ' + textStatus + '(error ' + errorCode + ')'); 
}); 
相關問題