1. If you know exactly what possible checked exception the code may get, then you should catch the specific exceptions, I understand it. But, I still don't see what's bad about putting "catch(Exception e)" at the end ? Just in case there is any exception you can't or don't list in your catch statements, at least you can catch it here. Some people may say it is not good to put so general exception catch, I agree. My point is, catch as many specfic checked exception as you can, then at the end , catch thise "Exception", what does it hurt ? please tell me.
2. Same question for catching "Runtime exception". Don't tell me people usually do it, tell me what it hurts. If I put this at the end, if there is real Runtime exception, at least I catch it and record the error details. I don't see it hurts anything, it just buy you more information. if you don't have this, when Runtime exception occurs you can't record any stack trace.
I know my idea may be very wrong, so please explain to me if you can. And tell me, if I don't catch "Exception" and "Runtime exception", then what if there is "Runtime exception" how do you record the information ? Similarly, what if there is some checked exception that you didn't list in your catch ?