Останавливается ли оно, давая вам исключение, или оно просто полностью останавливает выполнение вашего приложения? Если в вашем коде нет UnHandledExceptionHandler, может показаться, что он просто останавливается, но у вас действительно есть исключение.
UPDATE:
Вот как должен выглядеть ваш метод Main для захвата необработанных исключений, так как try / catch не всегда работает.
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
throw new NotImplementedException();
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
// You should/MAY see an error right here.
throw new NotImplementedException();
}