l

2014年2月5日 星期三

視力測驗:例外處理篇(1)

Feb. 04 09:42~10:05

image

 

Kay建議Teddy在《笑談軟體工程:例外處理設計的逆襲》這本書裡面加上一章,出幾道問題讓讀者們自我評量一下對於例外處理的了解程度。昨天花了點時間出了12道題目,打算放到新書裡面當作第一章。

這種「問題導向學習方法」,對於在台灣從小考到大的鄉民們應該很熟悉。在部落格上面寫了不少例外處理的文章,這一系列的文章就改以考題的方式來呈現。前兩集先把昨天出好的12題「洩題」給鄉民們參考,答案在書的附錄A,書預計3月下旬出版挑眉質疑

有興趣作答的鄉民可以留言。計時6分鐘,請開始作答。

***

1. 關於例外處理的敘述,何者是錯的?

A. 例外處理是一種非功能需求(non-functional requirement)。

B. 妥善的例外處理可以提高系統強健度(robustness)。

C. 因為及時上市(time-to-market)的原因,有時候就算知道產品的例外處理設計不完善,還是只能釋出讓客戶先使用,事後再想辦法慢慢修正。

D. 所有的例外狀況在需求分析時都可以被找出來。

E. 以上皆非。

2.  以下那種狀況應該交由例外處理來對付,才不至於需要付出容錯設計的高額成本?

A. NullPointerException或NullReferenceException。

B. 陣列索引超出範圍。

C. 硬碟空間不足。

D. 以上皆是。

E. 以上皆非。

3. 在finally block裡面發生例外,採取何種做法比較洽當?

A. 把例外往外丟。

B. 捕捉起來然後忽略它。

C. 捕捉起來然後印在主控台(console)。

D. 捕捉起來然後寫到日誌檔中。

E. 以上皆可。

4. C#與Objective-C的例外類別因為實作了以下哪一個模式(pattern),可以讓例外物件夾帶不固定數量的使用者自訂資料?

A. Collecting Parameter。

B. Variable State。

C. Composite。

D. Strategy。

E. State。

5. 敏捷開發讓例外處理設計變得…

A. 更簡單,因為不需要做太多事前設計(up-front design),所以不用考慮太多情況就可以寫動手程式。

B. 更難,因為不允許做太多事前設計,而且需求改來改去,造成例外處理更難設計。

C. 沒差別,因為不管用什麼開發方法,我們從來都沒花時間去設計例外處理。

D. 更難,因為每天都要開會討論例外處理的問題。

E. 更簡單,因為開發人員會自我管理,所以不需要擔心例外處理設計的問題。

6. Fault、error、failure在例外處理設計中經常會聽到的三個名詞。以下關於這三者的敘述何者為對?

A. Failure表示程式設計錯誤(programming error)。

B. Error表示一個函數無法如其規格所描述,提供正確的服務。

C. Fault表示系統處於不正確的狀態。

D. 以上皆非。

E. 以上皆是。

***

友藏內心獨白:這是視力測驗,不是智力測驗挑眉質疑

沒有留言:

張貼留言