自定义异常类的使用...

发布时间:2014-10-25 2:20:19
来源:分享查询网

自定义异常类的使用 -首先定义三个基本类: UErrorMessage.vb ,  UErrorMessageCollection.vb , UException.vb  -一个Form:  Form_UException.vb   UErrorMessage.vb Namespace Exceptions     Public Class UErrorMessage         Private istg_error_code As String         Private istg_error_cdesc As String         Private istg_error_edesc As String           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_cdesc As String, ByVal astg_error_edesc As String)             SetErrorCode(astg_error_code)             SetErrorDescription(New System.Globalization.CultureInfo("zh-CN"), astg_error_cdesc)             SetErrorDescription(New System.Globalization.CultureInfo("en-US"), astg_error_edesc)         End Sub             Private Sub SetErrorCode(ByVal astg_error_code As String)             istg_error_code = astg_error_code         End Sub           Private Sub SetErrorDescription(ByRef acul_culture_info As System.Globalization.CultureInfo, ByVal astg_error_desc As String)             If acul_culture_info.Name = "zh-CN" Then                 istg_error_cdesc = astg_error_desc             ElseIf acul_culture_info.Name = "en-US" Then                 istg_error_edesc = astg_error_desc             End If         End Sub           Public Sub FillErrorDescription(ByVal astg_replaced_string As String, ByVal astg_replaced_by_string As String)             istg_error_cdesc.Replace(astg_replaced_string, astg_replaced_by_string)             istg_error_edesc.Replace(astg_replaced_string, astg_replaced_by_string)         End Sub           Public Function GetErrorCode() As String             GetErrorCode = istg_error_code         End Function           Public Overloads Function GetErrorDescription(ByRef acul_culture_info As System.Globalization.CultureInfo) As String             Dim lstg_error_description As String             If acul_culture_info.Name = "zh-CN" Or acul_culture_info.Name = "zh-CHT" Then                 lstg_error_description = istg_error_cdesc             ElseIf acul_culture_info.Name = "en-US" Then                 lstg_error_description = istg_error_edesc             End If             GetErrorDescription = lstg_error_description         End Function       End Class End Namespace     UErrorMessageCollection.vb Namespace Exceptions     Public Class UErrorMessageCollection         Inherits System.Collections.CollectionBase           Public Sub Add(ByVal apmr_parameter As UErrorMessage)             List.Add(apmr_parameter)         End Sub           Public Sub Remove(ByVal aint_index As Integer)             If aint_index > (Count - 1) Or aint_index < 0 Then                 ' If no widget exists, a messagebox is shown and the operation is                 ' cancelled.                 '                System.Windows.Forms.MessageBox.Show("Index not valid!")             Else                 List.RemoveAt(aint_index)             End If         End Sub           Public ReadOnly Property Item(ByVal aint_index As Integer) As UErrorMessage             Get                 Return CType(List.Item(aint_index), UErrorMessage)             End Get         End Property           Public Function GetItemIndex(ByVal astg_error_code As String) As Integer             Dim lint_index As Integer             Dim lboo_continue As Boolean               lboo_continue = True             lint_index = 0             Do While lboo_continue = True                 If CType(List.Item(lint_index), UErrorMessage).GetErrorCode() = astg_error_code Then                     lboo_continue = False                 Else                     lint_index = lint_index + 1                     If lint_index > (Count - 1) Then                         lboo_continue = False                         lint_index = -1                     End If                 End If             Loop             GetItemIndex = lint_index         End Function       End Class End Namespace   UException.vb Namespace Exceptions       Public MustInherit Class UException         Inherits System.Exception         Protected ierm_error_msg_list As UErrorMessageCollection         Protected istg_error_code As String         Protected iexp_current_inner_exception As Exception         Private istg_custom_msg_1 As String         Private istg_custom_msg_2 As String         Private istg_custom_msg_3 As String         Private istg_custom_msg_4 As String         Private istg_custom_msg_5 As String         Private istg_custom_msg_6 As String           Public MustOverride Sub Initialize()           Public Sub New(ByVal astg_error_code As String)             MyBase.New(astg_error_code)             istg_custom_msg_1 = ""             istg_custom_msg_2 = ""             istg_custom_msg_3 = ""             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_custom_msg_1 As String)             MyBase.New(astg_error_code)             istg_custom_msg_1 = astg_error_custom_msg_1             istg_custom_msg_2 = ""             istg_custom_msg_3 = ""             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_custom_msg_1 As String, ByVal astg_error_custom_msg_2 As String)             MyBase.New(astg_error_code)             istg_custom_msg_1 = astg_error_custom_msg_1             istg_custom_msg_2 = astg_error_custom_msg_2             istg_custom_msg_3 = ""             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_custom_msg_1 As String, ByVal astg_error_custom_msg_2 As String, ByVal astg_error_custom_msg_3 As String)             MyBase.New(astg_error_code)             istg_custom_msg_1 = astg_error_custom_msg_1             istg_custom_msg_2 = astg_error_custom_msg_2             istg_custom_msg_3 = astg_error_custom_msg_3             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_custom_msg_1 As String, ByVal astg_error_custom_msg_2 As String, ByVal astg_error_custom_msg_3 As String, ByVal astg_error_custom_msg_4 As String)             MyBase.New(astg_error_code)             istg_custom_msg_1 = astg_error_custom_msg_1             istg_custom_msg_2 = astg_error_custom_msg_2             istg_custom_msg_3 = astg_error_custom_msg_3             istg_custom_msg_4 = astg_error_custom_msg_4             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_custom_msg_1 As String, ByVal astg_error_custom_msg_2 As String, ByVal astg_error_custom_msg_3 As String, ByVal astg_error_custom_msg_4 As String, ByVal astg_error_custom_msg_5 As String)             MyBase.New(astg_error_code)             istg_custom_msg_1 = astg_error_custom_msg_1             istg_custom_msg_2 = astg_error_custom_msg_2             istg_custom_msg_3 = astg_error_custom_msg_3             istg_custom_msg_4 = astg_error_custom_msg_4             istg_custom_msg_5 = astg_error_custom_msg_5             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_custom_msg_1 As String, ByVal astg_error_custom_msg_2 As String, ByVal astg_error_custom_msg_3 As String, ByVal astg_error_custom_msg_4 As String, ByVal astg_error_custom_msg_5 As String, ByVal astg_error_custom_msg_6 As String)             MyBase.New(astg_error_code)             istg_custom_msg_1 = astg_error_custom_msg_1             istg_custom_msg_2 = astg_error_custom_msg_2             istg_custom_msg_3 = astg_error_custom_msg_3             istg_custom_msg_4 = astg_error_custom_msg_4             istg_custom_msg_5 = astg_error_custom_msg_5             istg_custom_msg_6 = astg_error_custom_msg_6             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)             istg_custom_msg_1 = ""             istg_custom_msg_2 = ""             istg_custom_msg_3 = ""             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub             Public Sub New(ByVal astg_error_code As String, ByVal astg_custom_msg_1 As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)             istg_custom_msg_1 = astg_custom_msg_1             istg_custom_msg_2 = ""             istg_custom_msg_3 = ""             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_custom_msg_1 As String, ByVal astg_custom_msg_2 As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)             istg_custom_msg_1 = astg_custom_msg_1             istg_custom_msg_2 = astg_custom_msg_2             istg_custom_msg_3 = ""             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub             Public Sub New(ByVal astg_error_code As String, ByVal astg_custom_msg_1 As String, ByVal astg_custom_msg_2 As String, ByVal astg_custom_msg_3 As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)             istg_custom_msg_1 = astg_custom_msg_1             istg_custom_msg_2 = astg_custom_msg_2             istg_custom_msg_3 = astg_custom_msg_3             istg_custom_msg_4 = ""             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub             Public Sub New(ByVal astg_error_code As String, ByVal astg_custom_msg_1 As String, ByVal astg_custom_msg_2 As String, ByVal astg_custom_msg_3 As String, ByVal astg_custom_msg_4 As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)             istg_custom_msg_1 = astg_custom_msg_1             istg_custom_msg_2 = astg_custom_msg_2             istg_custom_msg_3 = astg_custom_msg_3             istg_custom_msg_4 = astg_custom_msg_4             istg_custom_msg_5 = ""             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_custom_msg_1 As String, ByVal astg_custom_msg_2 As String, ByVal astg_custom_msg_3 As String, ByVal astg_custom_msg_4 As String, ByVal astg_custom_msg_5 As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)             istg_custom_msg_1 = astg_custom_msg_1             istg_custom_msg_2 = astg_custom_msg_2             istg_custom_msg_3 = astg_custom_msg_3             istg_custom_msg_4 = astg_custom_msg_4             istg_custom_msg_5 = astg_custom_msg_5             istg_custom_msg_6 = ""             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_custom_msg_1 As String, ByVal astg_custom_msg_2 As String, ByVal astg_custom_msg_3 As String, ByVal astg_custom_msg_4 As String, ByVal astg_custom_msg_5 As String, ByVal astg_custom_msg_6 As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)             istg_custom_msg_1 = astg_custom_msg_1             istg_custom_msg_2 = astg_custom_msg_2             istg_custom_msg_3 = astg_custom_msg_3             istg_custom_msg_4 = astg_custom_msg_4             istg_custom_msg_5 = astg_custom_msg_5             istg_custom_msg_6 = astg_custom_msg_6             SetErrorCode(astg_error_code)             Initialize()         End Sub           Public Overloads Function GetErrorDescription() As String             Dim lstg_error_description As String             lstg_error_description = Me.GetErrorDescription(System.Threading.Thread.CurrentThread.CurrentUICulture)             Return lstg_error_description         End Function           Public Overloads Function GetErrorDescription(ByRef acul_culture_info As System.Globalization.CultureInfo) As String             Dim lstg_error_description As String             lstg_error_description = ierm_error_msg_list.Item(ierm_error_msg_list.GetItemIndex(istg_error_code)).GetErrorDescription(acul_culture_info)             lstg_error_description = lstg_error_description.Replace("%1", istg_custom_msg_1)             lstg_error_description = lstg_error_description.Replace("%2", istg_custom_msg_2)             lstg_error_description = lstg_error_description.Replace("%3", istg_custom_msg_3)             lstg_error_description = lstg_error_description.Replace("%4", istg_custom_msg_4)             lstg_error_description = lstg_error_description.Replace("%5", istg_custom_msg_5)             lstg_error_description = lstg_error_description.Replace("%6", istg_custom_msg_6)             Return lstg_error_description         End Function           Private Overloads Function GetInnerErrorDescription(ByRef acul_culture_info As System.Globalization.CultureInfo) As String             If Not MyBase.InnerException Is Nothing Then                 If TypeOf MyBase.InnerException Is System.Data.OleDb.OleDbException Then                     Return CType(MyBase.InnerException, System.Data.OleDb.OleDbException).Message                 ElseIf TypeOf Me.InnerException Is Exceptions.UException Then                     Return CType(MyBase.InnerException, UException).GetErrorDescription(acul_culture_info)                 Else                 End If             End If         End Function           Public Function GetAllErrorDescription() As String             Return MyClass.GetAllErrorDescription(System.Threading.Thread.CurrentThread.CurrentUICulture)         End Function           Public Overridable Function GetAllErrorDescription(ByRef acul_culture_info As System.Globalization.CultureInfo) As String             Dim lstg_inner_exception_description As String               If Not MyBase.InnerException Is Nothing Then                 If TypeOf MyBase.InnerException Is System.Data.OleDb.OleDbException Then                     lstg_inner_exception_description = Chr(13) + Chr(10) + "---------------------------------" + Chr(13) + Chr(10) + CType(MyBase.InnerException, System.Data.OleDb.OleDbException).Message                 Else                     'lstg_inner_exception_description = ""                     lstg_inner_exception_description = Chr(13) + Chr(10) + "---------------------------------" + Chr(13) + Chr(10) + CType(MyBase.InnerException, UException).GetErrorDescription(acul_culture_info)                 End If             End If             GetAllErrorDescription = istg_error_code + Chr(13) + Chr(10) + Chr(13) + Chr(10) + Me.GetErrorDescription(acul_culture_info) + lstg_inner_exception_description         End Function           Public Overloads Sub ShowErrorDescription()             ShowErrorDescription("", System.Threading.Thread.CurrentThread.CurrentUICulture)         End Sub           Public Overloads Sub ShowErrorDescription(ByVal astg_msgbox_title As String)             ShowErrorDescription(astg_msgbox_title, System.Threading.Thread.CurrentThread.CurrentUICulture)         End Sub           Public Overloads Sub ShowErrorDescription(ByVal astg_msgbox_title As String, ByVal acul_culture_info As System.Globalization.CultureInfo)             'MessageBox.Show(GetErrorDescription(acul_culture_info), astg_msgbox_title)             Dim lfrm_form As New Forms.Form_UException             lfrm_form.SetException(Me)             lfrm_form.ShowDialog()         End Sub           Private Sub SetErrorCode(ByVal astg_error_code As String)             istg_error_code = astg_error_code         End Sub           Public Function GetErrorCode() As String             GetErrorCode = istg_error_code         End Function       End Class End Namespace   Form_UException.vb Namespace Exceptions.Forms     Public Class Form_UException         Inherits System.Windows.Forms.Form   #Region " Windows Form Designer generated code "           Public Sub New()             MyBase.New()               'This call is required by the Windows Form Designer.             InitializeComponent()               'Add any initialization after the InitializeComponent() call           End Sub           'Form overrides dispose to clean up the component list.         Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)             If disposing Then                 If Not (components Is Nothing) Then                     components.Dispose()                 End If             End If             MyBase.Dispose(disposing)         End Sub           'Required by the Windows Form Designer         Private components As System.ComponentModel.IContainer           'NOTE: The following procedure is required by the Windows Form Designer         'It can be modified using the Windows Form Designer.          'Do not modify it using the code editor.         Friend WithEvents btn_ok As System.Windows.Forms.Button         Friend WithEvents btn_details As System.Windows.Forms.Button         Friend WithEvents lbl_exception_code As System.Windows.Forms.Label         Friend WithEvents gbx_details As System.Windows.Forms.GroupBox         Friend WithEvents lbl_inner_exception_code As System.Windows.Forms.Label         Friend WithEvents btn_prev As System.Windows.Forms.Button         Friend WithEvents btn_next As System.Windows.Forms.Button         Friend WithEvents btn_trace As System.Windows.Forms.Button         Friend WithEvents rtb_exception_desc As System.Windows.Forms.RichTextBox         Friend WithEvents rtb_inner_exception_desc As System.Windows.Forms.RichTextBox         <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()             Me.btn_ok = New System.Windows.Forms.Button             Me.btn_details = New System.Windows.Forms.Button             Me.lbl_exception_code = New System.Windows.Forms.Label             Me.gbx_details = New System.Windows.Forms.GroupBox             Me.rtb_inner_exception_desc = New System.Windows.Forms.RichTextBox             Me.btn_trace = New System.Windows.Forms.Button             Me.btn_next = New System.Windows.Forms.Button             Me.btn_prev = New System.Windows.Forms.Button             Me.lbl_inner_exception_code = New System.Windows.Forms.Label             Me.rtb_exception_desc = New System.Windows.Forms.RichTextBox             Me.gbx_details.SuspendLayout()             Me.SuspendLayout()             '             'btn_ok             '             Me.btn_ok.Location = New System.Drawing.Point(424, 88)             Me.btn_ok.Name = "btn_ok"             Me.btn_ok.Size = New System.Drawing.Size(100, 22)             Me.btn_ok.TabIndex = 1             Me.btn_ok.Text = "确定(OK)"             '             'btn_details             '             Me.btn_details.Location = New System.Drawing.Point(320, 88)             Me.btn_details.Name = "btn_details"             Me.btn_details.Size = New System.Drawing.Size(100, 22)             Me.btn_details.TabIndex = 3             Me.btn_details.Text = "详细(Details)"             '             'lbl_exception_code             '             Me.lbl_exception_code.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D             Me.lbl_exception_code.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))             Me.lbl_exception_code.ForeColor = System.Drawing.Color.Red             Me.lbl_exception_code.Location = New System.Drawing.Point(6, 4)             Me.lbl_exception_code.Name = "lbl_exception_code"             Me.lbl_exception_code.Size = New System.Drawing.Size(518, 22)             Me.lbl_exception_code.TabIndex = 4             '             'gbx_details             '             Me.gbx_details.Controls.Add(Me.rtb_inner_exception_desc)             Me.gbx_details.Controls.Add(Me.btn_trace)             Me.gbx_details.Controls.Add(Me.btn_next)             Me.gbx_details.Controls.Add(Me.btn_prev)             Me.gbx_details.Controls.Add(Me.lbl_inner_exception_code)             Me.gbx_details.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))             Me.gbx_details.Location = New System.Drawing.Point(4, 114)             Me.gbx_details.Name = "gbx_details"             Me.gbx_details.Size = New System.Drawing.Size(524, 256)             Me.gbx_details.TabIndex = 5             Me.gbx_details.TabStop = False             Me.gbx_details.Text = "详细(Details)"             '             'rtb_inner_exception_desc             '             Me.rtb_inner_exception_desc.BackColor = System.Drawing.SystemColors.InactiveBorder             Me.rtb_inner_exception_desc.Location = New System.Drawing.Point(10, 44)             Me.rtb_inner_exception_desc.Name = "rtb_inner_exception_desc"             Me.rtb_inner_exception_desc.ReadOnly = True             Me.rtb_inner_exception_desc.Size = New System.Drawing.Size(508, 206)             Me.rtb_inner_exception_desc.TabIndex = 5             Me.rtb_inner_exception_desc.Text = ""             '             'btn_trace             '             Me.btn_trace.Location = New System.Drawing.Point(436, 20)             Me.btn_trace.Name = "btn_trace"             Me.btn_trace.Size = New System.Drawing.Size(80, 22)             Me.btn_trace.TabIndex = 4             Me.btn_trace.Text = "跟踪(Trace)"             '             'btn_next             '             Me.btn_next.Location = New System.Drawing.Point(394, 20)             Me.btn_next.Name = "btn_next"             Me.btn_next.Size = New System.Drawing.Size(40, 22)             Me.btn_next.TabIndex = 3             Me.btn_next.Text = ">"             '             'btn_prev             '             Me.btn_prev.Location = New System.Drawing.Point(352, 20)             Me.btn_prev.Name = "btn_prev"             Me.btn_prev.Size = New System.Drawing.Size(40, 22)             Me.btn_prev.TabIndex = 2             Me.btn_prev.Text = "<"             '             'lbl_inner_exception_code             '             Me.lbl_inner_exception_code.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D             Me.lbl_inner_exception_code.Font = New System.Drawing.Font("Tahoma", 8.25!, CType((System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Italic), System.Drawing.FontStyle), System.Drawing.GraphicsUnit.Point, CType(0, Byte))             Me.lbl_inner_exception_code.ForeColor = System.Drawing.Color.Red             Me.lbl_inner_exception_code.Location = New System.Drawing.Point(10, 20)             Me.lbl_inner_exception_code.Name = "lbl_inner_exception_code"             Me.lbl_inner_exception_code.Size = New System.Drawing.Size(340, 22)             Me.lbl_inner_exception_code.TabIndex = 0             '             'rtb_exception_desc             '             Me.rtb_exception_desc.BackColor = System.Drawing.SystemColors.Control             Me.rtb_exception_desc.Location = New System.Drawing.Point(6, 28)             Me.rtb_exception_desc.Name = "rtb_exception_desc"             Me.rtb_exception_desc.ReadOnly = True             Me.rtb_exception_desc.Size = New System.Drawing.Size(518, 56)             Me.rtb_exception_desc.TabIndex = 6             Me.rtb_exception_desc.Text = ""             '             'Form_UException             '             Me.AcceptButton = Me.btn_ok             Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15)             Me.ClientSize = New System.Drawing.Size(532, 375)             Me.Controls.Add(Me.rtb_exception_desc)             Me.Controls.Add(Me.gbx_details)             Me.Controls.Add(Me.lbl_exception_code)             Me.Controls.Add(Me.btn_details)             Me.Controls.Add(Me.btn_ok)             Me.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))             Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog             Me.Name = "Form_UException"             Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen             Me.Text = "异常信息"             Me.gbx_details.ResumeLayout(False)             Me.ResumeLayout(False)           End Sub   #End Region           Private iboo_in_details As Boolean         Private iexp_exception As UException         Private iexp_current_inner_exception As System.Exception           Private Sub btn_details_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_details.Click             If iboo_in_details = False Then                 iboo_in_details = True             Else                 iboo_in_details = False             End If             ResizeWithInDetails()         End Sub           Private Sub Form_UException_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load             iboo_in_details = False             ResizeWithInDetails()         End Sub           Private Sub ResizeWithInDetails()             If iboo_in_details = False Then                 Me.Size = New System.Drawing.Size(540, 145)             Else                 Me.Size = New System.Drawing.Size(540, 400)             End If         End Sub           Friend Sub SetException(ByVal aexp_exception As UException)             iexp_exception = aexp_exception             Me.lbl_exception_code.Text = iexp_exception.GetErrorCode()             Me.rtb_exception_desc.Text = iexp_exception.GetErrorDescription()             If Not iexp_exception.InnerException Is Nothing Then                 Me.btn_details.Enabled = True                 Me.iexp_current_inner_exception = iexp_exception.InnerException                   ShowInnerException()             Else                 Me.btn_details.Enabled = False             End If         End Sub           Private Sub ShowInnerException()             If TypeOf iexp_current_inner_exception Is Exceptions.UException Then                 Me.lbl_inner_exception_code.Text = CType(iexp_current_inner_exception, Exceptions.UException).GetErrorCode                 Me.rtb_inner_exception_desc.Text = CType(iexp_current_inner_exception, Exceptions.UException).GetErrorDescription             Else                 Me.rtb_inner_exception_desc.Text = iexp_current_inner_exception.Message             End If             If iexp_current_inner_exception.InnerException Is Nothing Then                 btn_next.Enabled = False             Else                 btn_next.Enabled = True             End If             If iexp_current_inner_exception.GetBaseException Is Nothing Then                 btn_prev.Enabled = False             Else                 btn_prev.Enabled = True             End If         End Sub           Private Sub btn_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ok.Click             Me.Close()         End Sub           Private Sub btn_next_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_next.Click             iexp_current_inner_exception = iexp_current_inner_exception.InnerException             ShowInnerException()             'If Not iexp_current_inner_exception.InnerException Is Nothing Then             '    btn_next.Enabled = True             'Else             '    btn_prev.Enabled = True             '    btn_next.Enabled = False             'End If         End Sub             Private Sub btn_prev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_prev.Click             iexp_current_inner_exception = iexp_current_inner_exception.GetBaseException             ShowInnerException()             'If Not iexp_current_inner_exception.GetBaseException Is Nothing Then             '    btn_prev.Enabled = True             'Else             '    btn_prev.Enabled = False             '    btn_next.Enabled = True             'End If         End Sub           Private Sub btn_trace_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_trace.Click             System.Windows.Forms.MessageBox.Show(iexp_current_inner_exception.ToString())         End Sub     End Class End Namespace   使用Exception类自定义确误代码即其相关信息   Imports ASAT.Exceptions   Namespace Sublot.Exceptions     Public Class Exception_Sublot         Inherits UException           Public Overrides Sub Initialize()             ierm_error_msg_list = New UErrorMessageCollection             ierm_error_msg_list.Add(New ASAT.Exceptions.UErrorMessage("TEST-1001", "TEST[%1]!", "Can Not Find Correspoding Information About This Menu TEST [%1].!"))         End Sub           Public Sub New(ByVal astg_error_code As String)             MyBase.New(astg_error_code)         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal aexp_inner_exception As System.Exception)             MyBase.New(astg_error_code, aexp_inner_exception)         End Sub           Public Sub New(ByVal astg_error_code As String, ByVal astg_error_customer_error_msg_1 As String)             MyBase.New(astg_error_code, astg_error_customer_error_msg_1)         End Sub       End Class End Namespace   异常类的使用   直接在Form 中使用     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click         Try             Throw New ASAT.Sublot.Exceptions.Exception_Sublot("TEST-1001", "xxxxxxxxxxx")         Catch ex As Exceptions.UException             ex.ShowErrorDescription()         End Try   End Sub   在类中使用抛出,在Form 中来接 Class_sublot.vb           Public Function getSublotIDFromNo() As String               Try                 Dim i, j, k As Integer                 i = 1                 j = 0                 k = i / j             Catch ex As OverflowException                 Throw New ASAT.Sublot.Exceptions.Exception_Sublot("TEST-1001", ex)             End Try           End Function         Public Sub xx()             Try                 getSublotIDFromNo()             Catch ex As Exceptions.UException                 ex.ShowErrorDescription()             End Try           End Sub       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         'iobj_print.ShellTest()           Try               iobj_sublot.xx()           Catch ex As Exceptions.UException             ex.ShowErrorDescription()         End Try   End Sub   --效果图—

返回顶部
查看电脑版