2014-01-06 75 views
0

我想知道如何去捕捉錯誤,然後在自定義ListBox或其他東西中顯示其詳細信息。這個想法是讓一個自定義消息看起來很簡單,就像「Woops,出錯了!」但仍能夠提供故障排除信息。如果有人可以幫助我構建這些代碼,我會非常感激。如何捕捉異常並顯示其詳細信息

所以說我有可能導致錯誤,如連接到互聯網的代碼。我將如何能夠捕捉到錯誤並以單獨的形式顯示它(彈出窗口)?

我很抱歉,如果這接縫真的基本,但我是新來的東西,我只是不喜歡正常的錯誤窗口。

+0

在vb.net中使用'try-catch'。看到這裏http://msdn.microsoft.com/en-us/library/fk6t46tz.aspx – Rahul

回答

0

在我結束了這個結尾:

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)) 

這使我可以同時仍保留對錯誤的「技術」的信息顯示自定義消息。

enter image description here

感謝您的幫助的人!

+0

這就像我的答案,你不接受我的答案,複製它,並接受它,那是低級的人。 – Max

+0

@MaxMommersteeg對不起,我以爲我也將你的標記爲答案。然而,這也不是你的答案;部分是Jeff Bridgman的回答,導致我找到了這個解決方案。我從來沒有意識到,爲了解決這個問題,每個人都需要在背後輕拍一下 - 但是永遠不要感謝你的幫助,它的確有助於我找到解決方案。我發佈這個的原因是爲了讓那些在這個線程中絆倒的人簡化它。 – user2980316

+0

考慮使用'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

0

下面是一個代碼模板,讓你開始:

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 
0

使用下面的代碼輸出錯誤用戶:

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 
0

如果你想要的東西超級簡單,你可以這樣做:

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 

但是,如果你想要的東西有點花哨,我建議創建一個新的表格,其上可能有LabelRichTextBox。你可以給它一個構造函數來接受異常,並將填充表單的控件。我會用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 
0

你可以寫一個函數來代替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 - 它可以捕獲未處理的錯誤,但用戶也無法報告。