2011-01-11 69 views
1

我想知道在Javascript中實現異常處理的最佳和最簡單的方法。我正在尋找「一點」解決方案。我有很多功能,並不想繞過去實現try-catch。在JavaScript中實現異常處理

我覺得window.onerror會是一個更好的方法,因爲我只需要在一個地方實現這一點,並且任何函數都會出現任何異常,我將能夠使用window.onerror來處理它。但是,這似乎只在IE中支持。有沒有類似的方式可以使用,以便它支持所有主要的標準瀏覽器。

在此先感謝。

+2

也請看到這個問題:http://stackoverflow.com/questions/205688/javascript-exception-handling – 2011-01-11 06:32:14

+1

[google搜索](http://www.google.com/search?sourceid=chrome&ie= UTF-8&q =例外+ + javascript「例外」)始終有效。 :) – Alex 2011-01-11 06:55:09

回答

2

使用try..catch塊

try..catch塊在JavaScript中是非常相似的常規C#try..catch塊。可疑代碼將被放入try塊中,並且try塊中將發生的所有異常將被捕獲塊捕獲。

window.onload = function() 
{ 
    try 
    { 
     var x = 90; 
     var value = x/y; 
    } 
    catch(err) 
    { 
     document.write(err.name + ": " + err.message + "<br/>"); 
    } 
} 

輸出:

TypeError: 'y' is undefined

在抓你將得到包含異常的類型和描述的對象。你也可以使用finally語句,就像你在C#中使用的一樣。

window.onload = function() 
{ 
    try 
    { 
     var x = 90; 
     var value = x/y; 
    } 
    catch(err) 
    { 
     document.write(err.name + ": " + err.message + "<br/>"); 
    } 
    finally 
    { 
     alert('This is finally block'); 
    } 
} 

使用onerror事件

onerror事件將在每次有任何錯誤,而在執行文檔中的動作時間上升。這就像在ASP.NET中與Application_Error類似的異常處理。這裏是一個演示此示例代碼:

window.onload = function() 
{ 
    var x = 90; 
    var value = x/y; 
} 

window.onerror = function(errorMeaage, fileName, lineNumber) 
{ 
    document.write('Error: ' + errorMeaage); 
} 

使用jQuery解決方案

它類似於使用的onerror但使用jQuery語法。語法是:

$(window).error(
    function(errorMeaage, fileName, lineNumber) 
    { 
     // handle error here 
    } 
); 

JavaScript Exception Handling Techniques

1

摘錄如果有隻是一個稱呼對方几個功能,我會做這樣的事情。

try{ 
main(); 
} 
catch(e){ 
//error 
} 

的main()將調用一切功能; la,腳本中的入口點。儘管如此,這並不會讓您在下面的代碼中擁有很大的靈活性。因此,考慮製作不同的「層次」函數,每個函數的調用都包含在try ... catch塊中,您可以在其中適當地處理它們。即。

function a(){} 
function b(){} 

function main(){ 

//call a, catch any errors 
try{ 
    a(); 
} 
catch(e){} 

//call b, catch any errors 
try{ 
    b(); 
} 
catch(e){} 

//and so on... 

} 

main();