I have an app that runs a long batch process where many exceptions could potentially be thrown. If a non-critical exception is thrown during one item in the batch, I want to
A more proper design would be supported by the question: Which exceptions should I catch?
If you really need to catch any and all exceptions and still keep going, then you should be using both AppDomain
s and separate worker processes. Or change your host to ASP.NET or the task scheduler, which have already done all the hard work around process isolation and retries.