如何捕获异常并显示其详细信息

时间:2014-01-06 16:53:24

标签: vb.net exception-handling

我想知道如何捕获错误,然后在自定义ListBox或其他内容中显示其详细信息。我们的想法是允许自定义消息显示简单,例如“Woops,出了问题!”但仍然能够提供故障排除信息。如果有人可以帮我构建这段代码,我会非常感激。

所以说我有可能导致错误的代码,比如连接到互联网。我如何能够捕获错误并以单独的形式(弹出窗口)显示它?

如果这个接缝非常简单,我很抱歉,但我对这些东西不熟悉,我只是不喜欢正常的错误窗口。

5 个答案:

答案 0 :(得分:4)

使用以下代码向用户输出错误:

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

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分: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

在功能中你可以随心所欲 - 很可能会根据自己的喜好显示一个对话框或表单。

记录错误非常方便,因此您可以获得有关问题的反馈。用户只是倾向于按问题点击而不报告。

另请参阅VB的Application Framework - 它可以捕获用户也无法报告的未处理错误。

答案 4 :(得分: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

感谢大家的帮助!