在編程的世界裡,異常是指程式運行中出現一些異於尋常的處境,例如記憶體不足,沒有權限來連接網絡,想讀入的檔案不存在等等。程式語言讓程式員宣告某些運作有機會產生某些異常,而如果程式須要實行這些運作,程式便要預先宣告如果異常真的出現時,將會怎樣處理。而處理的方法主要有兩個,第一個便要宣告如果這異常出現,程式便會執行某些補救運作,又或這個實行這個運作的程式,便要宣告自己同樣會出現這個異常。以上的描述好像很複雜,但是這做法其實在我們的日常中也有類似的處境,聽罷便會想到,原來編程和實際生活原來很相似。

試想辦公室裡經理交托秘書影印文件,但是秘書很忙,所以她再交托辦公室助理去影印,跟著她發現原來這個助理影印,有機會變成了去碎紙,這個有機會拿文件去碎的,便是生活裡的異常。因此秘書會去想,如果真的要交托這助理,便要有心理準備會有碎紙的異常,如果助理正常地去影印,當然沒有問題,秘書也可以正常工作,但是如果這助理真的發生了碎紙這異常,秘書便有兩個選擇,第一個選擇是想辦法去補救,例如另有版本可以找來影印,另一個選擇便是秘書要向經理宣稱交托她去影印,(因為她再交托助理)也是會有機會變成碎紙。對於經理來說,如果秘書是前者,經理可以放心讓秘書去影印,因為不論有問題與否,秘書也會解決;如果秘書是後者,經理也是交托一個有機會影印變碎紙的秘書,所以同樣,如果秘書能正常的影印文件回來,經理便可以如常工作,但是如果秘書真的發生了影印變碎紙(雖然是助理所為),經理也有兩個選擇,一是當異常發生,他便自行去影印好了,又或他自己也宣稱有機會影印變碎紙。對於現實中的經理,影印變碎紙可能對工司的運作影響不大,但是對於程式,運行中的程式便會因異常終止了。

由此可見,原來編程中的異常處理,和現實世界中將事情交托關係是很相似的。當我們明白現實世界的運作時,我們便可以更清淅的了解編程裡的理念。反過來說,編程中的異常處理,給我們的啟示是,如果我們要交托一些事情給別人去完成時,我們便得預先想想所交托的人會否有機會出錯,如果會的話,我們能否補救,如果不能,我們才身想做的事便做不到,可以嗎?又或我們能否向交托我們做這件事的人預先聲明我們有機會不能完成呢?

逢星期五上載

圖片來源:互聯網

此文章之主持/專欄作家介紹:Herbert
資訊科技界資深工作者,學生時代受蘋果二代所啟蒙,沉迷電腦科技,尤其是軟件編程,大學時代主修計算機科學,最後以獲得哲學博士作完美終結。從事資訊科技行業超過二十年,對資訊科技界充滿憧憬和好奇,至今仍在追趕各項電腦新知,盼望能以資訊科技知識,令這個世界更美好。

版權所有©2013 創動力媒體 Dynamix