一般情況下,我們很少用到 try...catch 語句,但是有時候為了測試代碼中的錯誤,也有可能會用到。小白我也在工作中用到過。那么好的程序設計,什么時候會用到呢?
try...catch 一般用來捕獲宿主對象或者ECMAScript拋出的異常。
1 try{ 2 // 此處運次代碼 3 } catch(err) { 4 // 此處處理代碼 5 }
【注意】該語句嚴格區分大小寫,使用大寫字母會出錯。
?
并且,try...catch...finally 為JS 實現錯誤處理:
try {tryStatements // 必選項,可能發生錯誤的語句 } catch(exception) { // exception 可選項,任何變量名,exception的初始化值是扔出的錯誤的值catchStatements //可選項,處理在相關聯的 tryStatement 中發生的錯誤的語句 } finally {finallyStatements // 可選項,在所有其他過程發生之后無條件執行的語句 }
try...catch...finally?語句提供了一種方法來處理可能發生在給定代碼塊中的某些或全部錯誤,同時仍保持代碼的運行。如果發生了程序員沒有處理的錯誤,JS 只給用戶提供它的普通錯誤消息,就好象沒有錯誤處理一樣。
tryStatements?參數包含可能發生錯誤的代碼,而?catchStatement?則包含處理任何發生了的錯誤的代碼。如果在?tryStatements?中發生了一個錯誤,則程序控制被傳給?catchStatements?來處理。exception?的初始化值是發生在?tryStatements?中的錯誤的值。如果錯誤不發生,則不執行?catchStatements。
如果在與發生錯誤的?tryStatements?相關聯的?catchStatements?中不能處理該錯誤,則使用?throw?語句來傳播、或重新扔出這個錯誤給更高級的錯誤處理程序。
在執行完?tryStatements?中的語句,并在?catchStatements?的所有錯誤處理發生之后,可無條件執行?finallyStatements?中的語句。
請注意,即使在?try?或?catch?塊中返回一個語句,或在?catch?塊重新扔出一個錯誤,仍然會執行?finallyStatements?編碼。 一般將確保?finallyStatments?的運行,除非存在未處理的錯誤。(例如,在?catch?塊中發生運行時錯誤)。