ThreadExceptionEventArgs.Exception プロパティ
発生した Exception を取得します。
Public ReadOnly Property Exception As Exception
[C#]
public Exception Exception {get;}
[C++]
public: __property Exception* get_Exception();
[JScript]
public function get Exception() : Exception;
プロパティ値
発生した Exception 。
使用例
[Visual Basic, C#, C++] フォーム上の button1
をクリックすることによって、 ThreadException イベントを発生させる例を次に示します。この例では、次の 2 つのクラスを作成します。 ErrorHandler
クラスは、フォームと、イベントを発生させるボタンを作成します。 CustomExceptionHandler
クラスは、例外を処理するためのメソッドを提供します。
[Visual Basic, C#, C++] ErrorHandler
クラスの Main
では、コードが例外処理クラスの新しいインスタンス (CustomExceptionHandler
のインスタンス) を作成します。次に、作成されたインスタンスがイベントに追加され、アプリケーションが実行 (Run) されます。
[Visual Basic, C#, C++] この例では、 CustomExceptionHandler
クラスの OnThreadException
メソッドで、 try...catch...finally ステートメントを使用して例外を処理しています。 ShowThreadExceptionDialog
メソッドは、表示するメッセージを作成し、そのメッセージをメッセージ ボックスに表示します。
' Creates a class to throw the error.
Public Class ErrorHandler
Inherits System.Windows.Forms.Form
' Inserts code to create a form with a button.
' Programs the button to throw the exception when clicked.
Private Sub button1_Click(sender As Object, e As System.EventArgs)
Throw New ArgumentException("The parameter was invalid")
End Sub
Public Shared Sub Main()
' Creates an instance of the methods that will handle the exception.
Dim eh As New CustomExceptionHandler()
' Adds the event handler to to the event.
AddHandler Application.ThreadException, AddressOf eh.OnThreadException
' Runs the application.
Application.Run(New ErrorHandler())
End Sub
End Class
' Creates a class to handle the exception event.
Friend Class CustomExceptionHandler
'Handles the exception event
Public Sub OnThreadException(sender As Object, t As ThreadExceptionEventArgs)
Dim result As DialogResult = DialogResult.Cancel
Try
result = Me.ShowThreadExceptionDialog(t.Exception)
Catch
Try
MessageBox.Show("Fatal Error", "Fatal Error", _
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop)
Finally
Application.Exit()
End Try
End Try
' Exits the program when the user clicks Abort.
If result = DialogResult.Abort Then
Application.Exit()
End If
End Sub
' Creates the error message and display it.
Private Function ShowThreadExceptionDialog(e As Exception) As DialogResult
Dim errorMsg As String = "An error occurred please contact the " & _
"adminstrator with the following information:" & _
Microsoft.VisualBasic.ControlChars.Cr & _
Microsoft.VisualBasic.ControlChars.Cr
errorMsg &= e.Message & Microsoft.VisualBasic.ControlChars.Cr & _
Microsoft.VisualBasic.ControlChars.Cr & "Stack Trace:" & _
Microsoft.VisualBasic.ControlChars.Cr & e.StackTrace
Return MessageBox.Show(errorMsg, "Application Error", _
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop)
End Function
End Class
[C#]
// Creates a class to throw the error.
public class ErrorHandler : System.Windows.Forms.Form {
// Inserts code to create a form with a button.
// Programs the button to throw the exception when clicked.
private void button1_Click(object sender, System.EventArgs e) {
throw new ArgumentException("The parameter was invalid");
}
public static void Main(string[] args) {
// Creates an instance of the methods that will handle the exception.
CustomExceptionHandler eh = new CustomExceptionHandler();
// Adds the event handler to to the event.
Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException);
// Runs the application.
Application.Run(new ErrorHandler());
}
}
// Creates a class to handle the exception event.
internal class CustomExceptionHandler {
//Handles the exception event
public void OnThreadException(object sender, ThreadExceptionEventArgs t)
{
DialogResult result = DialogResult.Cancel;
try {
result = this.ShowThreadExceptionDialog(t.Exception);
}
catch {
try {
MessageBox.Show("Fatal Error", "Fatal Error",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
finally {
Application.Exit();
}
}
// Exits the program when the user clicks Abort.
if (result == DialogResult.Abort)
Application.Exit();
}
// Creates the error message and display it.
private DialogResult ShowThreadExceptionDialog(Exception e) {
string errorMsg = "An error occurred please contact the adminstrator " +
"with the following information:\n\n";
errorMsg = errorMsg + e.Message + "\n\nStack Trace:\n" + e.StackTrace;
return MessageBox.Show(errorMsg, "Application Error",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
}
[C++]
// Creates a class to handle the exception event.
private __gc class CustomExceptionHandler {
//Handles the exception event
public:
void OnThreadException(Object* /*sender*/, ThreadExceptionEventArgs* t)
{
DialogResult result = DialogResult::Cancel;
try {
result = this->ShowThreadExceptionDialog(t->Exception);
}
catch( Exception* ) {
try {
MessageBox::Show(S"Fatal Error", S"Fatal Error",
MessageBoxButtons::AbortRetryIgnore, MessageBoxIcon::Stop);
}
__finally {
Application::Exit();
}
}
// Exits the program when the user clicks Abort.
if (result == DialogResult::Abort)
Application::Exit();
}
// Creates the error message and display it.
private:
DialogResult ShowThreadExceptionDialog(Exception* e) {
String* errorMsg = S"An error occurred please contact the adminstrator with the following information:\n\n";
errorMsg = String::Concat( errorMsg, e->Message, S"\n\nStack Trace:\n", e->StackTrace );
return MessageBox::Show(errorMsg, S"Application Error",
MessageBoxButtons::AbortRetryIgnore, MessageBoxIcon::Stop);
}
};
// Creates a class to throw the error.
public __gc class ErrorHandler : public System::Windows::Forms::Form {
// Inserts code to create a form with a button.
// Programs the button to throw the exception when clicked.
private:
void button1_Click(Object* /*sender*/, System::EventArgs* /*e*/) {
throw new ArgumentException(S"The parameter was invalid");
}
};
int main() {
// Creates an instance of the methods that will handle the exception.
CustomExceptionHandler* eh = new CustomExceptionHandler();
// Adds the event handler to to the event.
Application::ThreadException += new ThreadExceptionEventHandler(eh, &CustomExceptionHandler::OnThreadException);
// Runs the application.
Application::Run(new ErrorHandler());
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
ThreadExceptionEventArgs クラス | ThreadExceptionEventArgs メンバ | System.Threading 名前空間