Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Exception Handler - How to
Message
From
07/04/2011 00:55:17
 
 
To
06/04/2011 13:19:11
General information
Forum:
ASP.NET
Category:
Forms
Miscellaneous
Thread ID:
01506276
Message ID:
01506326
Views:
43
This message has been marked as a message which has helped to the initial question of the thread.
Hi Gunnar,

Sometimes VB code looks foreign to me. <g> Anyway, what you posted looks a little different than the code I've used. Here's mine, but it's in C# ... sorry. It works, so maybe you can tweak it into VB and see if it's any more useful to you.
// in the Main:
//Creates an instance of the methods that will handle the exception.
CustomExceptionHandler eh = new CustomExceptionHandler();

//Adds the event handler to to the event.
Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

// runs the main form
Application.Run(new Form1());


// then the custom exception handling class
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);
	}
}
Hope it helps ...

~~Bonnie





>I am trying to add an exception handler to my vb.net WinApp - and as usual run into to some problems :-(
>
>From my best friend Google I pieced some code together which should accomplish this :
>Friend Class AppMgr
>    <STAThread()> _
>    Shared Sub Main()
>        ''The 2 event handlers 
>        ''add an unhandled exceptions handler 
>        Dim currentDomain As AppDomain = AppDomain.CurrentDomain
>        'for regular unhandled stuff 
>        AddHandler currentDomain.UnhandledException, AddressOf MYExceptionHandler
>        'for threads behind forms 
>        AddHandler Application.ThreadException, AddressOf MYThreadHandler
>
>        Dim frm1 As Form
>        frm1 = New DocProcess_Main()
>        Application.Run(frm1)
>    End Sub
>#Region "Exeption Handler"
>    Shared Sub MYExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
>        Dim EX As Exception
>        EX = e.ExceptionObject
>        'Console.WriteLine(EX.StackTrace)
>        DisplayError(EX)
>    End Sub
>    Shared Sub MYThreadHandler(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
>        'Console.WriteLine(e.Exception.StackTrace)
>        DisplayError(e.Exception)
>    End Sub
>    Shared Sub DisplayError(ByVal ex As Exception)
>        Dim errorMessage As String = ("Unhandled Exception:" + vbLf + vbLf + ex.Message + vbLf + vbLf + ex.GetType.ToString + vbLf + vbLf + "Stack Trace:" + vbLf) + ex.StackTrace
>        MessageBox.Show(errorMessage, "DMS Application Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.[Stop])
>        MessageBox.Show(ex.ToString, "DMS Application Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.[Stop])
>    End Sub
>#End Region
>End Class
>
>Public Class DocProcess_Main
>    Inherits System.Windows.Forms.Form
>    ...
>    ...
>End Class
>The error I currently get :
>
>Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "WindowsApplication1.DocProcess_Main.resources" was correctly embedded or linked into assembly "DMS DataEntry" at compile time, or that all the satellite assemblies required are loadable and fully signed.
>
>My problem: I don't even know if I implemented the code correctly?
>
>Any suggestions are great appreciated!
>
>Thanks!
Bonnie Berent DeWitt
NET/C# MVP since 2003

http://geek-goddess-bonnie.blogspot.com
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform