关于异常的再思考
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
?
上次和JGTM'2004 [MVP]討論異常,他說“盡可能用邏輯流程代替異常捕獲“。我也同意
但考慮下面的場景:
transfer(Account from ,Account to, int amount);
上面的這個函數是兩個帳號轉帳用的,假如發現from帳號沒有錢了,怎么處理呢?
發現from和to帳號是同一個帳號,該怎么處理呢?類似情況難道都用返回值來告訴調用者嗎?顯然不合適,這樣又回到結構化編程的老路了,調用者不得不做n多的判斷……
?
Windows大牛(Jeffery Richter)告訴我們的答案是:“拋出異常“,是這樣嗎?
按他的解釋,異常是對程序接口假設的一種違反
?
說道Jeffery Richter我心里也有些郁悶,在他的經典著作(Applied Microsoft .NET Framwork)中的Exception一章中提到:在設計類庫的時候要嚴格遵守他所提到的n多處理異常的原則,但又說應用開發人員則可以完全背離這些原則,從而設定自己的策略。這話說得很對,可是,像我們既要開發數據訪問層,又要開發業務邏輯層,說不定還有業務外觀層,那些是類庫,那些是應用?
那些應該使用這些原則?所謂應用開發和類庫開發不過是相對的概念。相對是相對了,可是我的數據訪問層和業務邏輯層是按照類庫來開發,還是按照應用來開發?!
轉載于:https://www.cnblogs.com/coollzh/archive/2004/03/15/3174.html
總結
- 上一篇: 文件服务器冷热数据划分,游戏服务器冷热数
- 下一篇: MS讲座:可视化的软件架构设计和Port