В C #, WinForms, VS2008, .NET 3.5 ...
Для этого кода:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormThatDividesByZero());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
public partial class FormThatDividesByZero : Form
{
public FormThatDividesByZero()
{
InitializeComponent();
}
private void DivideByZeroButton_Click(object sender, EventArgs e)
{
// Create a divide by zero exception.
int a = 0;
int b = 0;
int c = a / b;
}
}
Полный источник: http://forgefx.com/posts/ExceptionReporting.zip
Когда я запускаю этот небольшой тестовый проект через F5 из среды разработки, возникает исключение после нажатия кнопки DivideByZero и запускается окно сообщения. Когда я запускаю проект, дважды щелкнув по файлу .exe в папке / bin / Debug, исключение не перехватывается и отсутствует окно сообщения - почему это так?
Когда .exe запускается из-за пределов IDE или с помощью «Отладка> Запустить без отладки» из Visual Studio, я получаю необработанное исключение. Насколько я понимаю, приведенный выше код будет перехватывать все исключения.