我想知道如何去捕捉錯誤,然後在自定義ListBox
或其他東西中顯示其詳細信息。這個想法是讓一個自定義消息看起來很簡單,就像「Woops,出錯了!」但仍能夠提供故障排除信息。如果有人可以幫助我構建這些代碼,我會非常感激。如何捕捉異常並顯示其詳細信息
所以說我有可能導致錯誤,如連接到互聯網的代碼。我將如何能夠捕捉到錯誤並以單獨的形式顯示它(彈出窗口)?
我很抱歉,如果這接縫真的基本,但我是新來的東西,我只是不喜歡正常的錯誤窗口。
我想知道如何去捕捉錯誤,然後在自定義ListBox
或其他東西中顯示其詳細信息。這個想法是讓一個自定義消息看起來很簡單,就像「Woops,出錯了!」但仍能夠提供故障排除信息。如果有人可以幫助我構建這些代碼,我會非常感激。如何捕捉異常並顯示其詳細信息
所以說我有可能導致錯誤,如連接到互聯網的代碼。我將如何能夠捕捉到錯誤並以單獨的形式顯示它(彈出窗口)?
我很抱歉,如果這接縫真的基本,但我是新來的東西,我只是不喜歡正常的錯誤窗口。
在我結束了這個結尾:
Try
'Code which may error
Catch ex As Exception
MessageBox.Show("Whoops! An error was encountered during the login-in stage. The Server may be offline, un-reachable or your Server Credentials may be in-correct. Please contact U.G Studio for further details. " & _
vbNewLine & "" & vbNewLine & String.Format("Error: {0}", ex.Message))
這使我可以同時仍保留對錯誤的「技術」的信息顯示自定義消息。
感謝您的幫助的人!
這就像我的答案,你不接受我的答案,複製它,並接受它,那是低級的人。 – Max
@MaxMommersteeg對不起,我以爲我也將你的標記爲答案。然而,這也不是你的答案;部分是Jeff Bridgman的回答,導致我找到了這個解決方案。我從來沒有意識到,爲了解決這個問題,每個人都需要在背後輕拍一下 - 但是永遠不要感謝你的幫助,它的確有助於我找到解決方案。我發佈這個的原因是爲了讓那些在這個線程中絆倒的人簡化它。 – user2980316
考慮使用'Environment.Newline'而不是'VbNewLine' - 請參閱http://www.jaypm.com/2012/08/the-difference-between-vbcrlf-vbnewline-and-environment-newline/另請參閱使用[ String.Format()](http://msdn.microsoft.com/en-us/library/system.string.format(v = vs.110).aspx)或[StringBuilder](http://msdn.microsoft .com/en-us/library/system.text.stringbuilder(v = vs.110).aspx#StringAndSB),因爲它們在處理字符串時具有性能優勢 – Basic
下面是一個代碼模板,讓你開始:
Try
'Your code
Catch ex As Exception
MessageBox.Show("Woops, something's went wrong!")
'get troubleshooting info out of ex, stack trace perhaps
End Try
使用下面的代碼輸出錯誤用戶:
Try
'code
Catch ex As Exception
MessageBox.Show(string.Format("Error: {0}", ex.Message))
End Try
我不知道我怎麼會去追趕左右一個錯誤,然後在自定義ListBox或其他東西中顯示 的詳細信息。
如果您想將錯誤添加到列表框中:
Try
'code
Catch ex As Exception
listBox1.Items.Add("Whoops, something went wrong!")
End Try
如果你想要的東西超級簡單,你可以這樣做:
Try
'Try connecting to the internet
Catch ex As WebException
Dim message = String.Format(
"Encountered an error while connecting to internet: {0}", ex.Message)
MessageBox.Show(message)
End Try
但是,如果你想要的東西有點花哨,我建議創建一個新的表格,其上可能有Label
和RichTextBox
。你可以給它一個構造函數來接受異常,並將填充表單的控件。我會用ToString
異常上表現出的細節,因爲這會打印出一個不錯的堆棧跟蹤,並遞歸地打印出內部異常的任何細節:
Public Sub New(ex As Exception)
InitializeComponent() 'This call is required by Visual Studio.
Me.Label1.Text = String.Format(
"Encountered the following error: {0}", ex.Message)
Me.RichTextBox1.Text = ex.ToString()
End Sub
你可以從你的主窗體調用它是這樣的:
Try
'Try connecting to the internet
Catch ex As WebException
Dim errorForm = New ErrorForm(ex)
errorForm.Show()
End Try
你可以寫一個函數來代替MSGBOX的使用如:
Public Function LogMsgBox(
ex As Exception,
Prompt As String,
Optional Buttons As MessageBoxButtons = MessageBoxButtons.OK,
Optional Title As String = "OIS Error",
Optional ProgrammerNote As String = "",
Optional SuppressMsgBox As Boolean = False,
Optional FormRef As Object = Nothing) As MsgBoxResult
在功能,你可以得到你喜歡花哨 - 最有可能的表演一個對話框或形式更符合您的喜好。
記錄錯誤以便您獲得有關問題的反饋很方便。用戶只是傾向於點擊問題而不報告。
另請參閱Application Framework for VB - 它可以捕獲未處理的錯誤,但用戶也無法報告。
在vb.net中使用'try-catch'。看到這裏http://msdn.microsoft.com/en-us/library/fk6t46tz.aspx – Rahul