防禦式編程(defensive programming)係一種編程上嘅技巧,指喺寫個程式嘅源碼嗰陣要一路諗埋「最壞情況可能會係點」-一個程式實會攞一啲數據做輸入,而出錯好多時都係因為啲輸入唔啱而起嘅,採取防禦式編程嘅編程員會諗吓「如果個輸入唔啱樣,點樣先可以避免出錯」;舉個簡單例子說明,想像以下嘅短程式,編寫嚟做加法嘅,個程式會攞兩個輸入整數 a
同 b
,並且將兩個數加埋得出嘅數俾嚟做輸出,個編程員有考慮到「如果 a
同 b
唔係一個有效嘅數值」嘅情況,所以就寫段碼,教部電腦喺呢種情況下要點做[1]。
function add(a, b) { // add 呢個子程序,攞 a 同 b 做輸入...
if (a is not a valid number) { // 如果 a 唔係一個有效嘅數值...
throw new Error('invalid first number to add ' + a); // ... 就產生例外狀態
}
if (b is not a valid number) { // 如果 b 唔係一個有效嘅數值...
throw new Error('invalid second number to add ' + b); // ... 就產生例外狀態
}
return a + b; // 俾 a + b 嘅結果做輸出。
}
上面嘅例子用嘅係所謂例外處理嘅流程控制機制,即係即時打斷程式嘅流程,進入例外處理,如果冇定義對應嘅例外處理,就會出錯誤訊息,然後即刻中止程式運作。
例外處理並唔係唯一嘅防禦方法。