次の方法で共有


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 名前空間