2017-04-24 52 views
-1

我使用jQuery的下一個例子:的JavaScript抓不工作

try{ 

    $.post(url,data, function(response){ 
     throw 'Exception'; 
    }); 
}catch(e){ 
     alert('Error'); 
} 

但行:永遠不會執行alert('Error')。這裏發生了什麼?

+0

.post''$是異步的。它不會同步拋出錯誤。 – Xufox

+0

是正在執行的'try'中的代碼? – gabe3886

+0

在執行異步回調函數時,流程早已離開'try'模塊。 '$ .post()'*本身*不會引發異常。 – David

回答

2

你是異常拋出異常,所以異常不會被捕獲。

正確的方式來處理,這是

$.post(url,data, function(response){ 
    throw 'Exception'; 
}).catch(function(ex){ 
    alert('Error'); 
}); 
+0

謝謝,對了 – CStff

+0

請注意,這需要jQuery 3.0或更高版本 – CStff

+0

@CStff其他方式,從3.0開始它是'.fail(func)'。 (jqXHR.success(),jqXHR.error()和jqXHR.complete()回調方法從jQuery 3.0中刪除。可以使用jqXHR.done(),jqXHR.fail()和jqXHR.always()取而代之 - 從https://api.jquery.com/jquery.post/) – Jamiec