2 using System.Diagnostics;
3 using System.Threading;
4 using System.Threading.Tasks;
6 class CustomException : Exception
12 /* Expected exit code: 1 */
13 static void Main (string[] args)
15 if (Environment.GetEnvironmentVariable ("TEST_UNHANDLED_EXCEPTION_HANDLER") != null)
16 AppDomain.CurrentDomain.UnhandledException += (s, e) => {};
18 ManualResetEvent mre = new ManualResetEvent (false);
20 var t = new Thread (new ThreadStart (() => { try { throw new CustomException (); } finally { mre.Set (); } }));
23 if (!mre.WaitOne (5000))
26 /* Give a chance to the thread to finish executing the exception unwinding
27 * after the finally, before we exit with status 0 on the current thread */