Many a times, we use the catch block inside the try catch block for our clean up code. Something like try { // Do something } catch { // work failed, clean up code here } Rather than the above approach of using the catch block, it would be nicer to use the finally block, something like bool workSuccessful = false; try { // do some work workSuccessful = true; } finally { if(!workSuccessfull) { // cleanup code here. } } There is elegance in the latter method and I would certainly recommend that approach