我想對於一些用語不精確,造成誤解與討論上的困難,應該是給出一些定義的時候了。
底下是我用對設計階段的意圖所下的定義:
  • 成功:可由函數名稱看出其執行時的意圖,於流程上預期得出之處理。
  • 失敗:與成功相對,於流程上非預期得出之處理。
  • 錯誤:觸及程式語言中無法自理的條件,使得執行程式必須終止之處理。
  • 例外:觸及區域流程上無法自理的條件,但可能借程式語言更正之處理。
很簡略的給出了這幾個定義,或許並不嚴謹,但可以很清楚的看出這四個詞彙的分別。
我認為,資料結構、演算法、重構、設計模式等等,都圍繞在關於「成功」這部份的處理,其他的部份論及較少。
我對於例外處理的態度和這篇相同,除非必要,我盡量不使用例外處理。

在我最近幾年寫過的程式中,有一類處理是必須使用例外處理的,那就是必須使用 eval() 時的場合。
這類處理由於很難在執行完 eval() 之前確認其執行結果,為了防範未然,必須使用例外處理來使得程式可以不因其執行失敗而中斷。

對於中斷與例外處理的概念,可以參考這篇。文章是比較偏向組合語言的說明,但是其觀念是相通的。
arrow
arrow
    全站熱搜

    HACGIS 發表在 痞客邦 留言(3) 人氣()