ThreadExceptionEventArgs.Exception 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得發生的 Exception。
public:
property Exception ^ Exception { Exception ^ get(); };
public Exception Exception { get; }
member this.Exception : Exception
Public ReadOnly Property Exception As Exception
屬性值
所發生的 Exception。
範例
下列範例可讓您按一下 button1
表單來引發 ThreadException 事件。 此範例會建立兩個類別。 類別 ErrorHandler
會建立會引發事件的表單和按鈕。 類別 CustomExceptionHandler
提供處理例外狀況的方法。
在 Main
類別 ErrorHandler
中,程式碼會建立例外狀況處理類別的新實例,也就是 的 CustomExceptionHandler
實例。 然後,實例會新增至 事件,並執行應用程式。
OnThreadException
在 類別的 CustomExceptionHandler
方法中,此範例會使用 try...catch...finally
語句來處理例外狀況。
ShowThreadExceptionDialog
方法會建立要顯示的訊息,並將其顯示在訊息方塊中。
using System;
using System.Threading;
using System.Windows.Forms;
// Create a form with a button that, when clicked, throws an exception.
public class ErrorForm : System.Windows.Forms.Form
{
internal Button button1;
public ErrorForm() : base()
{
// Add the button to the form.
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
this.button1.Location = new System.Drawing.Point(100, 43);
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.Text = "Click!";
this.Controls.Add(this.button1);
this.button1.Click += new EventHandler(this.button1_Click);
this.Text = "ThreadException";
this.ResumeLayout(false);
}
// Throw an exception when the button is clicked.
private void button1_Click(object sender, System.EventArgs e)
{
throw new ArgumentException("The parameter was invalid");
}
public static void Main()
{
// Add the event handler.
Application.ThreadException += new ThreadExceptionEventHandler(CustomExceptionHandler.OnThreadException);
// Start the example.
Application.Run(new ErrorForm());
}
}
// Create a class to handle the exception event.
internal class CustomExceptionHandler
{
// Handle the exception event
public static void OnThreadException(object sender, ThreadExceptionEventArgs t)
{
DialogResult result = ShowThreadExceptionDialog(t.Exception);
// Exit the program when the user clicks Abort.
if (result == DialogResult.Abort)
Application.Exit();
}
// Create and display the error message.
private static DialogResult ShowThreadExceptionDialog(Exception e)
{
string errorMsg = "An error occurred. Please contact the adminstrator " +
"with the following information:\n\n";
errorMsg += string.Format("Exception Type: {0}\n\n", e.GetType().Name);
errorMsg += "\n\nStack Trace:\n" + e.StackTrace;
return MessageBox.Show(errorMsg, "Application Error",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
}
Imports System.Threading
Imports System.Windows.Forms
' Create a form with a button that, when clicked, throws an exception.
Public Class ErrorForm : Inherits Form
Friend WithEvents button1 As Button
Public Sub New()
' Add the button to the form.
Me.button1 = New System.Windows.Forms.Button()
Me.SuspendLayout()
Me.button1.Location = New System.Drawing.Point(100, 43)
Me.button1.Size = New System.Drawing.Size(75, 23)
Me.button1.Text = "Click!"
Me.Controls.Add(Me.button1)
Me.Text = "ThreadException"
Me.ResumeLayout(False)
End Sub
' Throw an exception when the button is clicked.
Private Sub button1_Click(sender As Object, e As System.EventArgs) _
Handles button1.Click
Throw New ArgumentException("The parameter was invalid.")
End Sub
Public Shared Sub Main()
' Add the event handler.
AddHandler Application.ThreadException,
AddressOf CustomExceptionHandler.OnThreadException
' Start the example.
Application.Run(New ErrorForm())
End Sub
End Class
' Create a class to handle the exception event.
Friend Class CustomExceptionHandler
'Handle the exception event.
Public Shared Sub OnThreadException(sender As Object, t As ThreadExceptionEventArgs)
Dim result As DialogResult = ShowThreadExceptionDialog(t.Exception)
' Exit the program when the user clicks Abort.
If result = DialogResult.Abort Then
Application.Exit()
End If
End Sub
' Create and display the error message.
Private Shared Function ShowThreadExceptionDialog(e As Exception) As DialogResult
Dim errorMsg As String = "An error occurred. Please contact the " &
"adminstrator with the following information:" &
vbCrLf & vbCrLf
errorMsg &= "Exception Type: " & e.GetType().Name & vbCrLf & vbCrLf
errorMsg &= e.Message & vbCrLf & vbCrLf
errorMsg &= "Stack Trace: " & vbCrLf & e.StackTrace
Return MessageBox.Show(errorMsg, "Application Error",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop)
End Function
End Class