@edna's comment is actually the answer, in my opinion. I too have had nightmare creations resulting from using a subsurface or multi-res modifier on the whole model, and creasing, preserving sharp edges etc. It's useful when it's useful, but it adds complexity that you might not need, and it can be hard to fix when overused. Using subdivide on a selection and then adjusting the smoothness and other attributes is better for times when you need higher resolution and smoothness only for certain parts. Example:
Say I want this to look a little more like and axe. If I multi-res or subsurface modify the whole thing, I will lose all the blocky shapes, and I'll spend a lot of time editing to try and preserve sharpness. In a worst case scenario, I'll end up with lots of extra geometry that interferes with 3d printing, rendering, or whatever. Plus it's just a pain in a simple case like this. So enter subdivide:
I turn off "ngons" because if it is on I may create geometrically unsound quads. Make a few cuts, add a bit of smoothness, and now the center of the axe has a puffier shape at the top and bottom. Next, the blade:
Notice the blade is smooth, but the nearby geometry was allowed to stay simple and pointy. (Real technical terms in use here).
I can proceed like this and make any number of more complex protrusions on an otherwise simple or blocky object. Notice that the parts I left alone remain simple, while other parts have different levels of complexity as required:
I hope that helps.