So lets say I happen to have an unhandled exception in my application or it crashes for some reason. Is there some way for me to capture the output and show an error report dial
You should handle the Application.ThreadException event.
Application.ThreadException