程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> VB.NET版機房免費零碎之異常處置

VB.NET版機房免費零碎之異常處置

編輯:VB.NET

VB.NET版機房免費零碎之異常處置。本站提示廣大學習愛好者:(VB.NET版機房免費零碎之異常處置)文章只能為提供參考,不一定能成為您想要的結果。以下是VB.NET版機房免費零碎之異常處置正文


異常處置,英文名為Exceptional Handling, 那時年少,還記得那年一同學習過的VB6.0的時分,經常運用ONError的錯誤語句。與傳統VB6.0中的OnError語句相比.NET平台的異常處置機制愈加靈敏,而且運用愈加方便。是替代日漸衰落的Error Code辦法的新法,提供Error Code 所未能詳細的優勢。異常處置巧妙又不失完滿的別離了接納和處置錯誤代碼。這個功用理清了編程者的思緒,也協助代碼加強了可讀性,方便了維護者的閱讀和了解。

異常處置(又稱為錯誤處置)功用提供了處置順序運轉時呈現的任何不測或異常狀況的辦法。異常處置運用 try、catch 和 finally 關鍵字來嘗試能夠未成功的操作,處置失敗,以及在預先清算資源。異常處置通常是避免未知錯誤發生所采取的處置措施。異常處置的益處是你不必再絞盡腦汁去思索各種錯誤,這為處置某一類錯誤提供了一個很無效的辦法,使編程效率大大進步。

一、異常處置Try...Catch...Finally

<span style="font-size:18px;"><span style="font-size:18px;">    Try  
        '順序代碼    
     Catch  
       '處置異常的代碼    
    Finally  
        '清算任務    
    End Try</span></span>

在上述語句中,Try語句塊通常寄存的是我們需求檢測能夠存在異常狀況的代碼,也就是說假如順序正確,則執行Try語句塊,Catch語句塊擔任捕獲到錯誤的代碼。所以當這段代碼在執行進程中發生異常,則轉到Catch塊中對該異常停止相應處置。最後,無論能否引發異常,Finally塊中的代碼最後一定會被執行。 Finaly塊用於肅清try塊中分配的任何資源以及運轉任何即便在發作異常時也必需執行的代碼。Catch和Finally語句可以共同運用於一個Try塊中。

  復雜來說,就是Try和Finally語句塊是必需運轉的,但是Catch語句不一定運轉,假如Try塊內的代碼沒有錯誤,沒有拋出異常的話,Catch語句塊中的代碼是不運轉的,而是跳過Catch塊直接運轉Finally塊中的清算任務。反之假如遇到了異常Catch語句塊中的處置任務就要停止。為什麼在Finally塊中停止清算任務?復雜的說一個順序的異常會招致順序不能正常完成完畢任務,而且在錯誤呈現的中央跳出順序,直接執行Catch語句塊中的代碼,使得在順序運轉時構建的對象資源不能釋放,糜費了內存資源,同時也能夠招致棧中數據存儲的蕪雜,所以無論有沒有呈現異常Finally塊中的代碼是一定會運轉的。
      以VB.NET版機房免費零碎中的注冊為例,我們要如何在代碼中使用異常處置呢?

<span style="font-size:18px;"><span style="font-size:18px;"> Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click  
        Try
            Dim RegisterManager As New BLL.RegisterManager  
            Dim studentinfo As New Entity.Studentinfo  
            Dim cardinfo As New Entity.Cardinfo  
            Dim rechargeinfo As New Entity.Rechargeinfo  
        If (RegisterManager.query(txtStudentNo.Text) Is Nothing And RegisterManager.queryCard(txtCardNo.Text) Is Nothing) Then
                studentinfo.cardNo = txtCardNo.Text  
                studentinfo.studentNo = txtStudentNo.Text  
                studentinfo.studentName = txtName.Text  
                studentinfo.sex = cmbSex.Text  
                studentinfo.department = txtDepartment.Text  
                studentinfo.grade = txtGrade.Text  
                studentinfo.stuclass = txtClass.Text  
                studentinfo.remark = txtRemark.Text  
                studentinfo.Handler = frmLogin.handler.handler  
                '用戶顯示層沒有處置人這個文本框,怎樣辦?數據庫外面handler這個字段的信息如何獲取,答案就在下面哦。  
      
                cardinfo.cardNo = txtCardNo.Text  
                cardinfo.balance = txtbalance.Text  
                cardinfo.status = "運用"
                cardinfo.registerDate = CStr(Format(Now(), "yyyy-MM-dd"))  
                cardinfo.registerTime = CStr(Format(Now(), "HH:mm:ss"))  
                cardinfo.handler = frmLogin.handler.handler  
                cardinfo.ischeck = "未結賬"
      
      
      
                rechargeinfo.cardNo = txtCardNo.Text  
                rechargeinfo.rechargeAmount = txtbalance.Text  
                rechargeinfo.rechargeDate = CStr(Format(Now(), "yyyy-MM-dd"))  
                rechargeinfo.time = CStr(Format(Now(), "HH:mm:ss"))  
                rechargeinfo.userID = frmLogin.handler.handler  
      
      
                RegisterManager.insert(studentinfo)  
                RegisterManager.insertCard(cardinfo)  
                RegisterManager.insertRecharge(rechargeinfo)  
      
                MsgBox("用戶注冊成功")  
            End If
        Catch ex As Exception  
            MessageBox.Show(ex.Message.ToString())  
        End Try
    End Sub</span></span>

假如,我們沒有寫捕捉異常的這個語句,該注冊在D層出錯了,運轉後果會怎樣?

前往欄目頁:

正如上圖所示,她會直接跳到有錯誤的中央,但是假如在順序外面寫了Try Catch,又會發作怎樣的奇觀呢?

兩種不同的報錯方式,第二種給人的覺得愈加直觀,協助我們理清了思緒,加強了代碼可讀性,方便維護者的閱讀和了解。

二、 拋出異常

當順序呈現異常情況時會招致零碎提早跳出該順序,運用Catch捕獲異常,可使我們持續執行Catch的內容。try...catch 捕捉的是零碎自行檢測出來的錯誤。假如我們需求自定義一些錯誤,例如檢測到了卡號不存在等錯誤的時分,我們可以運用Throw 關鍵字來在順序中拋出異常。

Throw關鍵字通常用於辦法體中,並且拋出一個異常對象,假如一個辦法沒有捕捉能夠引發的異常,調用該辦法的其他辦法應該捕捉並處置異常。順序在執行到throw語句時立刻終止,它前面的語句都不執行。經過throw拋出異常後,假如想在上一級代碼中來捕捉並處置異常,則需求在拋出異常的辦法中運用throws關鍵字在辦法的聲明中指明要拋出的異常;假如要捕獲throw拋出的異常,則必需運用try-catch語句。例如,為了保證邏輯的正確,在順序中判別假如有違邏輯的局部可以拋出一個異常,如:任何數都不能除0,假如0作為除數的話就要拋出一個異常,throw new exception("0不能作為除數!")

代碼如下:

Private Sub butnTest_Click(sender As Object, e As EventArgs) Handles Button1.Click    
        
        Try  
            Dim g As Integer =3   
            Dim h As Integer =0    
            TextBox1.Text = GetTry(g, h)    
        
        Catch ex As Exception    
            MsgBox("除數不能為0", vbOKOnly + vbInformation, "零碎音訊")    
        
        Finally  
            MsgBox("完畢")    
        
        End Try  
              
        
End Sub  
        
Private Function GetTry(ByVal a As Integer, b As Integer) As Integer  
        
        If b = 0 Then  
            Dim excOurOwnException As New ArgumentException("除數不能為0")      '拋出異常    
            Throw excOurOwnException    
        End If  
        
End Function

運用異常處置,可以使大少數的正常代碼與多數異常處置的別離,其次錯誤分類一致處置,最後告訴運用者詳細發作了什麼錯誤。機房免費零碎,未完,待續......

作者:csdn博客 丁國華

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved