To debug your application, you should run it under a debugger configured to stop on all exception as a starting point.
As indicated in a comment, you should avoid local try-catch when not necessary. You rarely need try/catch blocks in C#.
Usually, you might want to handle unhandled exception handling at application scope. A lot of information can be found on the web and in official MSDN documentation. By the way, since you are a beginner, it might make sense to read some books on C# first.
http://www.csharp-examples.net/catching-unhandled-exceptions/[
^]
Both of you sample code are usually wrong. You rarely want to swallow exception as in first example and if you write a message to the user, you will typically give him a proper message and not use the original message.
For some type of application were safety or intellectual property are important, you really don't want to display the stack trace as it can give some crucial information.