共用方式為


try...catch...finally 陳述式

實作 Jscript 的錯誤處理。

try {
   [tryStatements]
} catch(exception) {
   [catchStatements]
} finally {
   [finallyStatements]}

引數

  • tryStatements
    選擇項。 發生錯誤的陳述式。

  • 例外狀況
    必要項。 任何變數名稱。 exception 的初始值就是發生的錯誤值。

  • catchStatements
    選擇項。 用來處理在關聯的 tryStatement 發生之錯誤的陳述式。

  • finallyStatements
    選擇項。 在所有錯誤發生之後,會無條件執行的陳述式。

備註

對於可能在特定程式碼區塊中發生的某些或所有錯誤,try...catch...finally 陳述式提供了處理方式,同時可繼續執行程式碼。 如果發生程式設計人員沒有處理過的錯誤,JScript 只會將一般的錯誤訊息提供給使用者,當做不進行錯誤處理。

tryStatements 包含可能發生錯誤的程式碼,而 catchStatements 則包含用來處理確實發生錯誤的程式碼。 如果 tryStatements 中發生錯誤,則程式控制權會轉移給 catchStatements 處理。 exception 的初始值就是在 tryStatements 中發生的錯誤值。 如果沒有錯誤發生,就不會執行 catchStatements。

當發生錯誤時,如果與 tryStatements 相關的 catchStatements 無法處理這個錯誤,請用 throw 陳述式來傳送錯誤,或是將錯誤送至更高階的錯誤處理程式。

tryStatements 中的所有陳述式執行後,並且 catchStatements 中產生任何錯誤處理時,finallyStatements 中的陳述式會無條件執行。

請注意,即使 trycatch 區塊中出現傳回陳述式,或從 catch 區塊中擲回錯誤,仍會執行 finallyStatements 內的程式碼。 除非發生未處理的錯誤 (例如,在 catch 區塊內造成執行階段錯誤),否則所有的 finallyStatements 一定都會執行。

注意事項注意事項

為了避免潛在混淆情況,請不要在 finally 區塊中使用 return 陳述式。 在 trycatch 區塊出現 return 陳述式後,且在執行 return 陳述式之前,會執行 finally 區塊的程式碼。 在這種情況中,執行初始 return 陳述式 before 會先執行 finally 區塊中的 return 陳述式,而產生不同的傳回值。

範例

描述

下列範例會導致擲回錯誤的結果,並顯示該錯誤的訊息、錯誤碼和名稱。

程式碼

try
{
    var arr = new Array(-1);
}
catch(e)
{
    print ("Error Message: " + e.message);
    print ("Error Code: " + (e.number & 0xFFFF))
    print ("Error Name: " + e.name);
}

// Output:
//  Error Message: Array length must be zero or a positive integer
//  Error Code: 5029
//  Error Name: RangeError

描述

下列範例顯示 JScript 例外處理的運作方式。

程式碼

try
    {
    print("Outer try is running");
 
    try
        {
        print("Nested try is running");
        throw new Error(301, "an error");
        }
    catch(e)
        {
        print("Nested catch caught " + e.message);
        throw e;
        }
    finally
        {
        print("Nested finally is running");
        }   
    }
catch(e)
    {
    print("Outer catch caught " + e.message);
    }
finally
    {
    print("Outer finally is running");
    }

// Output:
//  Outer try is running
//  Nested try is running
//  Nested catch caught an error
//  Nested finally is running
//  Outer catch caught an error
//  Outer finally is running

需求

版本 5

請參閱

參考

throw 陳述式

Error 物件