I think the above was a pretty good explanation. It is definately not a rule that you have to catch and throw all checked exceptions. But
you should be careful about what you do with them.
In general, I think you should catch and handle yourself exceptions your program might throw if you know how to handle it. If you don't think it makes sense to handle it yourself, let the calling method deal with it. Often times they are better equipped anyway.