atitit.異常處理
巢狀冗長的解決方案
1. 異常處理的需要改進的地方12
. +異常設計的初衷是
, 在程式**現錯誤時
, 由程式自己處理錯誤
, 盡量不要以
exit(0)
這種粗暴的方式中止程式.1
3. 正常流程和異常流程的分離。24
. 「是藥三分毒」, 任何事物有缺點,異常也是25
. 共訪問長補短,協同使用26
. solu:事件化處理37
. ref3
為了表述方便,下面將主調函式稱為「父函式」,被調函式稱為「子函式」,以「祖」、「父」、「子」、「孫」等來形容函式之間的呼叫關係。
乙個父函式為什麼要呼叫子函式?因為它知道子函式可以實現某種功能,但父函式根本就不關心子函式是如何實現的,子函式只需向父函式報告結果成功與否。誰知這子函式又呼叫了孫函式,而這孫函式丟擲了乙個異常。
那麼這個異常該由誰來處理呢?難道要它的祖函式來處理嗎?根本不可能。祖函式根本就不知道孫函式是個什麼東西,甚至根本不知道有這麼乙個孫函式的存在,你讓它如何去處理這個異常?
乙個父函式既然呼叫了子函式,就應該對這個子函式的行為負全部責任,絕不能把子函式造成的結果交給祖函式處理。所以,處理這個異常的只能是該函式的直接呼叫者,絕不可越級。
異常處理機制的引入,完全破壞了這個原則。於是,乙個父函式,它不但必須了解子函式的行為,還必須了解孫函式、曾孫函式、玄孫函式的種種行為。簡直就是不可能的。
作者:: ★(attilax)>>>
綽號:老哇的爪子
(全名::
attilax akbar al rapanui
阿提拉克斯
阿克巴阿爾
拉帕努伊
)漢字名:艾龍,
email:[email protected]
另外,(
蕭筱雨)
同志說:
c()丟擲的異常,應該在
b()中處理,即使不好處理,也要轉化成
b()的異常丟擲。
既然如此,那請問這種處理方法與用返回值逐層返回相比,有什麼優點?
優點我已經說了,那就是正常流程和異常流程的分離。
藥可治病,也可致病,說的就是事物矛盾的兩重性
。因為藥有毒而否認藥的價值從而不用它,這達不到治病的目的。矛盾的兩重性還告訴我們,對事物進行完全肯定或者否定通常是不正確的,因為還存在著乙個科**用的問題
事物的存在都有其存在的道理,任何事物都是矛盾的統一體,c++
中的異常處理也不例外。
由於人們的立場或者視野不同,對於同一事物的看法往往不會是完全相同的,有時甚至會完全相反。由此,就會產生爭論
「是藥三分毒」,藥可治病,也可致病,說的就是事物矛盾的兩重性。因為藥有毒而否認藥的價值從而不用它,這達不到治病的目的。矛盾的兩重性還告訴我們,對事物進行完全肯定或者否定通常是不正確的,因為還存在著乙個科**用的問題
其實c++
中的異常處理只是另一種形式的錯誤處理方式,和傳統的錯誤處理方式並不排斥,他們是一種「共存」的關係。只是因為在某些方面或者某些時候,使用異常處理方式比傳統的錯誤處理方式更具優越性,所以異常處理才有了使用的必要,它的存在也才是合理的。
才不會因噎而廢食,因為異常處理存在著使用的侷限性就否認其價值,才能知道什麼情況下使用異常處理比較合適,什麼情況下使用異常處理方式和傳統錯誤方式都可以,而什麼情況下最好不要使用異常處理,等等。
最後的建議就是:明智地使用異常處理。
orm.callbackfun=function(data)
catch(e)
}var json=str2json(data);
var obj=json[0];
var fm=new aform()
fm.bind(obj);
};
改進異常處理的6
條建議
- dancen
的專欄
- 部落格頻道
- csdn.net.html
Atitit 攔截資料庫異常的處理最佳實踐
atitit 攔截資料庫異常的處理最佳實踐 需要特殊處理的ex 在 dao層異常轉換並丟擲 1server層轉換為業務異常1 catch sqlexceptione catch uidemptyexe stringsql insert agent uid,pwd values uid pwd sql...
python巢狀函式中的異常處理嘗試
最近寫 的時候突然出現了這個疑問,就是如果巢狀函式中使用異常處理,那內外層的異常處理會怎麼進行。但是網上也沒有找到滿意的結果就自己動手試了一下。內外層函式都有異常處理 defwz try 1 0except exception as e print wz函式的異常處理 e print 出錯不影響外面...
的異常處理 C 異常處理總結
做開發不僅僅要考慮到業務邏輯更要在寫 時將各種可能考慮周全,但是這又是很難的事情,畢竟開發就是個人的事,而使用者可能上萬甚至百萬級別。這時,程式的穩定性就極為重要,我們不能讓程式因為某一處執行出問題而就直接導致程式或者產生其他更嚴重的後果,比如 做除法時當除數為零時,陣列訪問越界時,容器capaci...