�@Windows�t�H�[���E�A�v���P�[�V������R���\�[���E�A�v���P�[�V��������������ہA��O����������\����������ł́A��{�I�ɁATry-Catch�\���ɂ�肻�̗�O���L���b�`���ēK�ȏ��u���{���K�v������B�����������ɂ́A��O���������L���b�`�i���g���b�v�j����Ă��Ȃ��Ƃ����P�[�X�͑��X����A���̏ꍇ�ɂ̓A�v���P�[�V�����̎��s���Ɏ��̂悤��.NET Framework�W���̃G���[�E�_�C�A���O���\������Ă��܂����ƂɂȂ�B
�@���̃G���[�E�_�C�A���O�́A���ĕ�����Ƃ���A��ʓI�ȃ��[�U�[�ɂƂ��ĕ�����₷�����̂Ƃ͂����Ȃ��B�p�\�R���̑���Ɏ��M�̂Ȃ��l�ł���A����������r�[�ɍ��f���Ă��܂��Ƃ������Ƃ����邾�낤�B
�@���̂悤�Ȏ��Ԃ�����邽�߂ɁA.NET�W���̃G���[�E�_�C�A���O���A�����ƃ��[�U�[�E�t�����h���Ȏ���̃G���[�E�_�C�A���O�ɐ�ւ������Ƃ����v�]���A�����Ƒ����̂ł͂Ȃ����낤���B
�@�����Ŗ{�e�ł́AWindows�A�v���P�[�V������R���\�[���E�A�v���P�[�V�����ŏ�������Ă��Ȃ���O���A1�J���ł܂Ƃ߂ăn���h�����Ă��܂����@���Љ��B���̕��@�ɂ��n���h���������\�b�h���ŁA�Ǝ��ɍ쐬�����_�C�A���O��\������悤�ɂ���A�O�q�̗v�]�������\�ł���B
�@��������Ă��Ȃ���O���n���h������ɂ́A�ȉ���2�̕��@���p�ӂ���Ă���B
�@��������Ȃ�������O���n���h������ɂ́AWindows�t�H�[���Ȃ�Application�N���X�iSystem.Windows.Forms���O��ԁj��ThreadException�C�x���g���n���h�����ď�������悢�B���̃C�x���g�́AWindows�t�H�[���E�A�v���P�[�V�����̃��C���E�X���b�h�i��Application�N���X��Run���\�b�h�ɂ����s�����A�v���P�[�V�����̃R���e�L�X�g�j���Ŕ��������������̗�O���n���h�����邽�߂̂��̂ł���B
�@����ł́A��L�̃��C���E�X���b�h�ȊO�̃R���e�L�X�g��Ŕ���������O�́A�ǂ̂悤�ɂ��ăn���h������悢�̂��낤���H ������s���̂��A���݂̃A�v���P�[�V�����E�h���C���i��AppDomain�N���X�iSystem���O��ԁj�̃I�u�W�F�N�g�ɂ��\����AThread.GetDomain���\�b�h�ɂ��擾�ł���j��UnhandledException�C�x���g�ł���B
�@�Ⴆ�A�}���`�X���b�h�E�A�v���P�[�V�����Ȃǂɂ����āA���C���E�X���b�h�ȊO�̃X���b�h�Ŕ���������O��A�R���\�[���E�A�v���P�[�V�����Ŕ���������O�Ȃǂ́A���ׂĂ���UnhandledException�C�x���g���n���h�����ď�������悢�B
�@�ȏ�A�����2�̃C�x���g�����p���Ė������̗�O�����ۂɏ������Ă���̂��A���̃T���v���E�v���O�������B
using System;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication1
{
public class Program
{
[STAThread]
static void Main()
{
// ThreadException�C�x���g�E�n���h����o�^����
Application.ThreadException += new
ThreadExceptionEventHandler(Application_ThreadException);
// UnhandledException�C�x���g�E�n���h����o�^����
Thread.GetDomain().UnhandledException += new
UnhandledExceptionEventHandler(Application_UnhandledException);
// ���C���E�X���b�h�ȊO�̗�O��UnhandledException�Ńn���h��
//string buffer = "1"; char error = buffer[2];
// �����Ŏ��s����郁�C���E�A�v���P�[�V�����E�X���b�h�̗�O��
// Application_ThreadException�Ńn���h���ł���
Application.Run(new Form1());
}
// ��������O���L���b�`����C�x���g�E�n���h��
// �iWindows�A�v���P�[�V�����p�j
public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
ShowErrorMessage(e.Exception, "Application_ThreadException�ɂ���O�ʒm�ł��B");
}
// ��������O���L���b�`����C�x���g�E�n���h��
// �i��ɃR���\�[���E�A�v���P�[�V�����p�j
public static void Application_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = e.ExceptionObject as Exception;
if (ex != null)
{
ShowErrorMessage(ex, "Application_UnhandledException�ɂ���O�ʒm�ł��B");
}
}
// ���[�U�[�E�t�����h���ȃ_�C�A���O��\�����郁�\�b�h
public static void ShowErrorMessage(Exception ex, string extraMessage)
{
MessageBox.Show(extraMessage + " \n�\�\�\�\�\�\�\�\\n\n" +
"�G���[���������܂����B�J�����ɂ��m�点��������\n\n" +
"�y�G���[���e�z\n" + ex.Message + "\n\n" +
"�y�X�^�b�N�g���[�X�z\n" + ex.StackTrace);
}
}
}
Imports System.Threading
Public Class Program
<STAThread()> _
Shared Sub Main()
' ThreadException�C�x���g�E�n���h����o�^����
AddHandler Application.ThreadException, AddressOf Application_ThreadException
' UnhandledException�C�x���g�E�n���h����o�^����
AddHandler Thread.GetDomain().UnhandledException, AddressOf Application_UnhandledException
' ���C���E�X���b�h�ȊO�̗�O��UnhandledException�Ńn���h��
'Dim buffer As String = "1"
'Dim [error] As Char = buffer.Chars(2)
' �����Ŏ��s����郁�C���E�A�v���P�[�V�����E�X���b�h�̗�O��
' Application_ThreadException�Ńn���h���ł���
Application.Run(New Form1)
End Sub
' ��������O���L���b�`����C�x���g�E�n���h��
' �iWindows�A�v���P�[�V�����p�j
Public Shared Sub Application_ThreadException(ByVal sender As Object, ByVal e As ThreadExceptionEventArgs)
ShowErrorMessage(e.Exception, "Application.ThreadException�ɂ���O�ʒm�ł��B")
End Sub
' ��������O���L���b�`����C�x���g�E�n���h��
' �i��ɃR���\�[���E�A�v���P�[�V�����p�j
Public Shared Sub Application_UnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
Dim ex As Exception = CType(e.ExceptionObject, Exception)
If Not ex Is Nothing Then
ShowErrorMessage(ex, "Application.UnhandledException�ɂ���O�ʒm�ł��B")
End If
End Sub
' ���[�U�[�E�t�����h���ȃ_�C�A���O��\�����郁�\�b�h
Public Shared Sub ShowErrorMessage(ByVal ex As Exception, ByVal extraMessage As String)
MessageBox.Show(extraMessage & vbLf & "�\�\�\�\�\�\�\�\" & _
vbLf & vbLf & _
"�G���[���������܂����B�J�����ɂ��m�点��������" & _
vbLf & vbLf & _
"�y�G���[���e�z" & vbLf & ex.Message & vbLf & vbLf & _
"�y�X�^�b�N�g���[�X�z" & vbLf & ex.StackTrace)
End Sub
End Class
�@���̃T���v���E�v���O���������s�����̂����̉�ʂł���B
�@�����ō쐬���Ă���_�C�A���O�͂��܂�ǂ���Ƃ͂����Ȃ����A���g���₷���A���₷����荞�ނ��ƂŁA���[�U�r���e�B�̍����G���[�ʒm�_�C�A���O�ɂ��邱�Ƃ��ł��邾�낤�B
�@�Ȃ�Visual Studio .NET���C���X�g�[������Ă�����Ȃǂł́A���̐ݒ���e�ɂ���ẮA��L�Ɏ�������O���n���h�����邽�߂̃C�x���g����������O�ɁA�f�o�b�K��I�����邽�߂́mJust-In-Time �f�o�b�O�n�_�C�A���O���\������邱�Ƃ�����B���̃_�C�A���O���\�������̂�}�~������@�ɂ��ẮA�uTIPS�F�m�A�v���P�[�V�����E�G���[�n�_�C�A���O���\���ɂ���ɂ́H�v���Q�Ƃ��Ăق����B
�J�e�S���FWindows�t�H�[���@�����ΏہF��O
�J�e�S���F�R���\�[���E�A�v���P�[�V�����@�����ΏہF��O
�g�p���C�u�����FApplication�N���X�iSystem.Windows.Forms���O��ԁj
�g�p���C�u�����FAppDomain�N���X�iSystem���O��ԁj
�֘ATIPS�F�m�A�v���P�[�V�����E�G���[�n�_�C�A���O���\���ɂ���ɂ́H
�u.NET TIPS�v
Copyright© Digital Advantage Corp. All Rights Reserved.