• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 458
  • Last Modified:

TraceListener vs Try-Catch?

Q. What's the difference between using TraceListeners and placeing a Try-Catch on every method???

Q. Looks like I would need a Try-Catch anyway in order to use the Trace.WriteLine method???

I've been using the following code on every method to catch errors. It calls a class implementing a StreamWriter to write both method() name and exception message to a c:\log.txt......  The log.tx is also encrypted to keep prying eyes from reading the detailed exceptions (ie... methods, line numbers, etc...) Encryption can also be disabled for my eyes only or I can decrypt a log sent to me from a client.

Try
{
      //code....
}
catch (Exception ex)
{      
      EventLogWriter.Write(" Form1_Load() " + ex.ToString(), "Error");
}

0
pointeman
Asked:
pointeman
3 Solutions
 
DhaestCommented:
I always thought that a traceListener is used for creating a log-file where you store the errors, but also some event to see if they happen, how many times they happen, ...

A try-catch-event will only catch an error

You can use the Trace.WriteLine("Exiting from Main()") without a try-catch, but if there is something wrong with the trace (for example if you're tracing to a file) and the file is removed, edited by someone else, ...)
   
0
 
Ignacio Soler GarciaCommented:
Anyway this way of managing the errors is not the best one, I know because I used it before. Let me tell you what I've learned:

Its better to let the Exception to go up to the initial caller and log there the exception (you have the stack trace to do that). This way you can handle the exception and do whatever is expected to do with errors (usually inform the error, maybe mail it and end the application).

What will you do if you had a NullReferenceException inside that FormLoad event?
0
 
pointemanAuthor Commented:
Okay, I've found many TraceListener examples on the Internet. Some use a custom class.cs while other use the app.config file.
Q. Which is better, the class or .config file?
Q. Does the TraceListener automatically log messages or do have to continually use a Trace.WriteLine?
It would be nice if the TraceListener class could be initialized when the application starts...
0
 
Jaime OlivaresCommented:
you have to manually use trace.writeline
you can construct and initialize your own tracelistener class at program Main function, and put it in some class object as a static member.
Also, notice using try/catch comsumes lots of time, so you shoud use it just when there is a true error and you done have other alternative.
0
 
pointemanAuthor Commented:
I have a StackTrace setup in a web site global.asax that reports any errors occuring via email.
Too bad Window Apps don't have this ability.
I was hoping the Win App Tracing/Debugging offered something similar.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now