In general, avoid provoking an exception which you could easily have avoided by execution-time testing and which could be a problem for reasons other than a bug elsewhere in your code.
If you're going to divide by something and you have no reason to trust that the divisor is 0 (e.g. if it was user entered) then check the input first.
If, however, the divisor should never be zero for other reasons (e.g. it's the size of a collection which should definitely be non-empty) then it's at least more reasonable to let that bubble up as an exception. In that case you shouldn't be handling that specific exception though, as you're not expecting it to go wrong. You may want to defensively guard against the possibility anyway - but if you spot an error like that, you're probably going to want to throw some other kind of exception to indicate the bug. Again, this shouldn't be "handled" other than near the top of the stack where you might be catching general exceptions (e.g. so that a server can keep going even if a single request fails).
In general you should only be handling exceptions which you can't reasonably predict - e.g. an I/O failure, or a web service not being present etc.