日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...

發(fā)布時(shí)間:2025/7/14 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

你能保證你的程序不會(huì)出問(wèn)題嗎?

不能

當(dāng)你的程序執(zhí)行到某個(gè)地方發(fā)生了你不想要的結(jié)果。你是否想讓它一錯(cuò)再錯(cuò)?

不想

你是否想讓你的程序占著茅坑不拉屎?

不想

你是否想知道你的程序出錯(cuò)的原因?

看了了這4個(gè)問(wèn)題之后。假設(shè)你的回答和我的一致,那么請(qǐng)看下文

trycatch finally的使用方法:

  • try??
  • '你想要寫(xiě)的程序??
  • catch??
  • '捕獲你想寫(xiě)的程序里面全部發(fā)生的異常??
  • finally??
  • '不管發(fā)生還是不發(fā)生異常,你都想運(yùn)行的代碼?

  • 演示樣例:

  • Dim?Update_Info?As?String?=?"update?"?&?Table?&?"set?"?&?FieldAndContent????'改動(dòng)的sql語(yǔ)句??
  • ????????????Dim?DBConnectStr?As?New?ConnectStringDAL????'數(shù)據(jù)庫(kù)連接字符串??
  • ????????????Dim?DBConnection?As?New?SqlConnection(DBConnectStr.ConnectString)???'數(shù)據(jù)庫(kù)連接對(duì)象??
  • ??
  • ????????????DBConnection.Open()?'連接數(shù)據(jù)庫(kù)??
  • ??
  • ????????????Dim?DBCmd?As?New?SqlCommand(Update_Info,?DBConnection)??'運(yùn)行改動(dòng)語(yǔ)句??
  • ??
  • ????????????Result?=?"成功改動(dòng)了:"?&?DBCmd.ExecuteNonQuery?&?"行"??
  • ????????Catch?ex?As?Exception??
  • ????????????Result?=?"在改動(dòng)數(shù)據(jù)過(guò)程中發(fā)生了錯(cuò)誤:"?&?ex.Message ?
  • ? ??MsgBox?Result
  • ? ??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那里。

    比方上面的代碼

  • ? ??Dim?Update_Info?As?String?=?"update?"?&?Table?&?"set?"?&?FieldAndContent????'改動(dòng)的sql語(yǔ)句??
  • ????????????Dim?DBConnectStr?As?New?ConnectStringDAL????'數(shù)據(jù)庫(kù)連接字符串??
  • ????????????Dim?DBConnection?As?New?SqlConnection(DBConnectStr.ConnectString)???'數(shù)據(jù)庫(kù)連接
  • ? ??Dim?DBCmd?As?New?SqlCommand(Update_Info,?DBConnection)??'運(yùn)行改動(dòng)語(yǔ)句
  • ? ??Result?=?"成功改動(dòng)了:"?&?DBCmd.ExecuteNonQuery?&?"行"
  • ? ??Catch?ex?As?Exception
  • ? ??Result?=?"在改動(dòng)數(shù)據(jù)過(guò)程中發(fā)生了錯(cuò)誤:"?&?ex.Message
  • 在連接數(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。