In my 3.5 .net web application I have a background thread that does a lot of work (the application is similar to mint.com in that it does a lot of account aggregation on background threads). I do extensive exception handling within the thread performing the aggregation but there’s always the chance an unhandled exception will be thrown and my entire application will die. I’ve read some articles about this topic but they all seem fairly outdated and none of them implement a standard approach. Is there a standard approach to this nowadays? Is there any nicer way to handle this in ASP.NET 4.0?
Share
You can always put a try/catch block around your worker thread at a very high level… like right when the thread starts. I’m assuming this is what you’re doing already, or something like it. But just keep in mind that you definitely don’t want to turn an unknown error into a silent unknown error, because then it’s going to be much harder to track down when something goes wrong. Be sure you are logging the exception to the EventLog or your custom app log if you want to just catch it and forget it.
Like Aaronaught says, the application should die when something unexpected happens. But I don’t see a problem with just letting your background thread exit/die instead of bringing down the whole application process (in fact, I don’t think Aaron is correct here, it won’t kill the entire process) I think your question can basically be translated as “is there something magical in ASP.NET that will suddenly solve issues I don’t even know about yet?” and the answer to that of course, is no. But you already knew that. 🙂