重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...
你能保證你的程序不會(huì)出問(wèn)題嗎?
不能
當(dāng)你的程序執(zhí)行到某個(gè)地方發(fā)生了你不想要的結(jié)果。你是否想讓它一錯(cuò)再錯(cuò)?
不想
你是否想讓你的程序占著茅坑不拉屎?
不想
你是否想知道你的程序出錯(cuò)的原因?
想
看了了這4個(gè)問(wèn)題之后。假設(shè)你的回答和我的一致,那么請(qǐng)看下文
trycatch finally的使用方法:
演示樣例:
? ??finally ?
? ??DBConnection.Close倘若你的程序在連接數(shù)據(jù)庫(kù)的時(shí)候出錯(cuò)導(dǎo)致連接失敗,假設(shè)沒(méi)有不論什么你能夠參考的提示信息。那么你可能會(huì)覺(jué)得是查詢語(yǔ)句錯(cuò)了。而不是sa用戶的登錄password錯(cuò)誤了。而如上程序,假設(shè)
DBConnection.Open()?'連接數(shù)據(jù)庫(kù)
這里出錯(cuò)了,那么這句完了之后她就直接跳轉(zhuǎn)到catch ex as exception那里運(yùn)行它以下的語(yǔ)句,通過(guò)調(diào)用ex.message,它會(huì)返回錯(cuò)誤的原因,可能是username或password錯(cuò)誤了。然后你能夠在finally那里寫(xiě)上關(guān)閉數(shù)據(jù)庫(kù)連接的代碼,這樣就能夠防止程序遇到錯(cuò)誤直接跳出程序。而不釋放資源(相當(dāng)于占著茅坑不拉屎)。
回到剛才的第二個(gè)問(wèn)題,當(dāng)程序發(fā)生了你不想要的結(jié)果。他會(huì)一直執(zhí)行下去。剛才說(shuō)遇到錯(cuò)誤它會(huì)跳出來(lái)。可是不想要的結(jié)果如本來(lái)這個(gè)變量A應(yīng)該被賦值得到3,可是它卻是4,而這個(gè)時(shí)候它是不會(huì)直接跳出的,由于這不是什么異常的錯(cuò)誤,可能是邏輯上的錯(cuò)誤。依照分層的思想。假設(shè)發(fā)生在UI層,我們?yōu)榱俗孶I曾職責(zé)單一,不進(jìn)行不必要的推斷語(yǔ)句,僅僅負(fù)責(zé)用戶操作的響應(yīng)、用戶數(shù)據(jù)的傳遞和各種顯示的功能,邏輯上不做太多的推斷和處理,這時(shí)候你能夠使用拋出異常來(lái)使你的程序發(fā)生異常,直接跳到catch那里。
比方上面的代碼
在連接數(shù)據(jù)庫(kù)之前拋出了異常,注意。這個(gè)異常是你人為?的制造的。它也屬于異常的一種類型,所以這個(gè)時(shí)候它就不運(yùn)行連接數(shù)據(jù)庫(kù)以及以下的代碼直到catch為止,他會(huì)運(yùn)行catch以下的代碼,并顯示異常的原因。值得注意的是finally后面的語(yǔ)句,無(wú)論程序是否會(huì)出現(xiàn)異常。它肯定是會(huì)運(yùn)行的,一般自己衡量一下該運(yùn)行什么程序好。一般都會(huì)寫(xiě)一些釋放資源的代碼。
總結(jié)
以上是生活随笔為你收集整理的重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spring事务管理 Transacti
- 下一篇: 社交系统/社群系统ThinkSNS+ a