Application.OnThreadException メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Application.OnThreadException メソッドの意味・解説 

Application.OnThreadException メソッド

ThreadException イベントを発生させます。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Shared Sub OnThreadException
 ( _
    t As Exception _
)
Dim t As Exception

Application.OnThreadException(t)
public static void OnThreadException
 (
    Exception t
)
public:
static void OnThreadException (
    Exception^ t
)
public static void OnThreadException
 (
    Exception t
)
public static function OnThreadException
 (
    t : Exception
)

パラメータ

t

スローされた例外を表す Exception。

解説解説
使用例使用例

フォームで button1 をクリックすることによって、ThreadException イベントを発生させるコード例を次に示します。この例では、次の 2 つのクラスを作成します。ErrorHandler クラスは、フォーム、およびイベントを発生させるボタンを作成します。CustomExceptionHandler クラスは、例外を処理するためのメソッドを提供します。

ErrorHandler クラスの Main では、コードが例外処理クラスの新しいインスタンス (CustomExceptionHandler のインスタンス) を作成します。次に、作成されたインスタンスがイベントに追加され、アプリケーションが実行 (Run) されます。

この例では、CustomExceptionHandler クラスの OnThreadException メソッドで、try...catch...finally ステートメントを使用して例外を処理しています。ShowThreadExceptionDialog メソッドは、表示するメッセージを作成し、そのメッセージをメッセージ ボックスに表示します。

Imports System
Imports System.IO
Imports System.Windows.Forms
Imports System.Threading
Imports System.Drawing

Public Class Form1
    Inherits Form

    ' Inserts code to create a form with a button.
    Private WithEvents Button1 As
 Button

    Sub New()
        Me.Size = New Size(600, 100)

        Button1 = New Button()
        Button1.Text = "Click Me"
        Button1.Location = New Point(10, 10)
        Me.Controls.Add(Button1)
    End Sub

    ' Programs the button to throw the exception when clicked.
    Private Sub Button1_Click(ByVal
 sender As Object, ByVal
 e As System.EventArgs) Handles Button1.Click
        Throw New ArgumentException("The
 parameter was invalid")
    End Sub

    <STAThread()> _
    Shared Sub Main()
        ' Creates an instance of the methods that will handle the exception.
        Dim eh As CustomExceptionHandler =
 New CustomExceptionHandler()

        ' Adds the event handler  to the event.
        AddHandler Application.ThreadException, AddressOf
 eh.OnThreadException

        ' Runs the application.
        Application.Run(New Form1())
    End Sub
End Class

' Create a class to handle the exception event.
Friend Class CustomExceptionHandler

    ' Handles the exception event.
    Public Sub OnThreadException(ByVal
 sender As Object, ByVal
 t As ThreadExceptionEventArgs)
        Dim result As DialogResult = System.Windows.Forms.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 = System.Windows.Forms.DialogResult.Abort)
 Then
            Application.Exit()
        End If
    End Sub

    ' Creates the error message and displays it.
    Private Function ShowThreadExceptionDialog(ByVal
 e As Exception) As DialogResult
        Dim errorMsg As StringWriter = New
 StringWriter()
        errorMsg.WriteLine("An error occurred please contact the
 adminstrator with the following information:")
        errorMsg.WriteLine("")
        errorMsg.WriteLine(e.Message)
        errorMsg.WriteLine("")
        errorMsg.WriteLine("Stack Trace:")
        errorMsg.WriteLine(e.StackTrace)
        Return MessageBox.Show(errorMsg.ToString(), "Application
 Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop)
    End Function
End Class

using System;
using System.Windows.Forms;
using System.Threading;
using System.Drawing;

public class Form1 : Form
{
    // Inserts code to create a form with a button.
    Button button1;

    private Form1()
    {
        this.Size = new Size(600, 100);

        button1 = new Button();
        button1.Click += new EventHandler(button1_Click);
        button1.Text = "Click Me"; 
        button1.Location = new Point (10, 10);
        this.Controls.Add(button1);
    }
 
    // 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 the event.
       Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException);
 
       // Runs the application.
       Application.Run(new Form1());
    }
 }
 
 // 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 displays 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);
    }
 }
public:
   // Creates a class to throw the error.
   ref 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 gcnew ArgumentException( "The parameter was invalid" );
      }

   public:
      static void Main()
      {
         // Creates an instance of the methods that will handle the
 exception.
         CustomExceptionHandler ^ eh = gcnew CustomExceptionHandler;
         
         // Adds the event handler  to the event.
         Application::ThreadException += gcnew ThreadExceptionEventHandler( eh, &Form1::CustomExceptionHandler::OnThreadException
 );
         
         // Runs the application.
         Application::Run( gcnew ErrorHandler );
      }
   };

   // Creates a class to handle the exception event.
internal:
   ref class CustomExceptionHandler
   {
   public:
      // Handles the exception event.
      void OnThreadException( Object^ /*sender*/, ThreadExceptionEventArgs^
 t )
      {
         System::Windows::Forms::DialogResult result = System::Windows::Forms::DialogResult::Cancel;
         try
         {
            result = this->ShowThreadExceptionDialog( t->Exception
 );
         }
         catch ( Exception^ ) 
         {
            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 displays it.
   private:
      System::Windows::Forms::DialogResult ShowThreadExceptionDialog( Exception^
 e )
      {
         String^ errorMsg = "An error occurred please contact the adminstrator
 with the following information:\n\n";
         errorMsg = String::Concat( errorMsg, e->Message, "\n\nStack Trace:\n",
 e->StackTrace );
         return MessageBox::Show( errorMsg, "Application
 Error", MessageBoxButtons::AbortRetryIgnore, MessageBoxIcon::Stop );
      }
   };
// Creates a class to throw the error.
public static class ErrorHandler
 extends 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");
    } //button1_Click

    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 the event.
        Application.add_ThreadException(
            new ThreadExceptionEventHandler(eh.OnThreadException));

        // Runs the application.
        Application.Run(new ErrorHandler());
    } //main
} //ErrorHandler

// Creates a class to handle the exception event.
private static class CustomExceptionHandler
{
    // Handles the exception event.
    private void OnThreadException(Object sender,
 ThreadExceptionEventArgs t)
    {
        DialogResult result = DialogResult.Cancel;

        try {
            result = this.ShowThreadExceptionDialog(t.get_Exception());
        }
        catch (System.Exception exp) {
            try {
                MessageBox.Show("Fatal Error", "Fatal Error",
 
                    MessageBoxButtons.AbortRetryIgnore, 
                    MessageBoxIcon.Stop);
            }
            finally {
                Application.Exit();
            }
        }

        // Exits the program when the user clicks Abort.
        if (result.Equals(DialogResult.Abort)) {
            Application.Exit();
        }
    } //OnThreadException

    // Creates the error message and displays it.
    private DialogResult ShowThreadExceptionDialog(System.Exception
 e)
    {
        String errorMsg = "An error occurred please contact the"
            + " administrator with the following information:\n\n";
        errorMsg = errorMsg + e.get_Message() + "\n\nStack Trace:\n"
            + e.get_StackTrace();
        return MessageBox.Show(errorMsg, "Application Error",
 
            MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
    } //ShowThreadExceptionDialog
} //CustomExceptionHandler

public static void main(String[]
 args)
{
    ErrorHandler.main(args);
}//main
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

Application.OnThreadException メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Application.OnThreadException メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS