JavaScript 快速導覽 - 例外處理

例外處理 (exception handling) 是 JavaScript 的另一種程式控制機制,可以檢查程式出錯的地方,並且在程式出錯時提供解決的方式。



關鍵字 (keyword) 中的 try-catch-finally 被用來處理例外 (exception) ,把可能出錯的部份放在 try 的部份,然後程式出錯時解決的部份放在 catch 的地方, finally 的部份無論程式有沒有出錯都會執行。


try 要跟 catchfinally 之一連用,不可單獨使用。例如以下程式呼叫不存在的 say() 函數 (function) , catch 後小括弧中的 err 變數會記錄錯誤發生的原因
function run() {
    try {
        say("哈囉!");
    }
    catch (err) {
        document.write(err + "...程式停止執行....");
    }
}


/* 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:run43.js
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2010 年 11 月 */


利用以下的 HTML 文件開啟
<html>

<head>
<title>JavaScript Demo</title>
<script src="run43.js" type="text/javascript"></script>
</head>

<body>
<input id="b" type="button" value="RUN" onclick="run();">
<div id="content"></div>
</body>

</html>

<!-- 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:jsexample43.html
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2010 年 11 月 -->


執行結果如下



我們可以看到錯誤的原因為 ReferenceError: say is not defined 。


以下程式連用 try-catch-finally
function run() {
    try {
        say("哈囉!");
    }
    catch (err) {
        document.write(err + "...程式停止執行....");
    }
    finally {
        document.write("無論如何,這個訊息都會被印出....");
    }
}


/* 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:run44.js
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2010 年 11 月 */


利用以下的 HTML 文件開啟
<html>

<head>
<title>JavaScript Demo</title>
<script src="run44.js" type="text/javascript"></script>
</head>

<body>
<input id="b" type="button" value="RUN" onclick="run();">
<div id="content"></div>
</body>

</html>

<!-- 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:jsexample44.html
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2010 年 11 月 -->


執行結果如下



我們可以看到 finally 的訊息最後也被印出。


另一個關鍵字 throw 可以在程式中丟出例外,使程式中斷執行。這裡丟出的例外可以是字串 (string) 或數字 (number) ,例如以下程式
function run() {
    try {
        if (1 == 0) {
            throw "1 == 0";
        }
        else {
            throw "1 != 0";
        }
    }
    catch (err) {
        document.write(err);
    }
}


/* 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:run45.js
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2010 年 11 月 */


利用以下的 HTML 文件開啟
<html>

<head>
<title>JavaScript Demo</title>
<script src="run44.js" type="text/javascript"></script>
</head>

<body>
<input id="b" type="button" value="RUN" onclick="run();">
<div id="content"></div>
</body>

</html>

<!-- 《程式語言教學誌》的範例程式
     http://pydoing.blogspot.com/
     檔名:jsexample45.html
     功能:示範 JavaScript 程式 
     作者:張凱慶
     時間:西元 2010 年 11 月 -->


執行結果如下



中英文術語對照
例外處理exception handling
關鍵字keyword
例外exception
函數function
字串string
數字number






沒有留言: