The behaviour you see is quite reasonable, given what we can expect from computer algebra systems. It will be very similar in other systems too (and exactly the same in all of Mathematica versions 8, 9 and 10 -- I do not see a difference in v9). Here's Maple's output for example:
I assume that you would expect
a/a to return
Indeterminate or a warning. There are reasons why doing this is not practical in a computer algebra system. To implement this behaviour, the
/ operation would need to check its operands every time, making sure that they are not zero. It turns out that such a test can be quite slow, and in general it is undecidable. (See
PossibleZeroQ under Details.)
The implementor of a computer algebra system now faces a decision: should all edge cases be at least attempted to be handled (knowing that a perfect solution strictly isn't possible), possibly at a singificant cost to performance and practical usability? Given that most of them chose not to indicates that doing otherwise would involve significant compromises.
To sum up: A computer algebra system (CAS) doesn't replace a mathematician. All CAS have limitations due to practical reasons. Understanding these limitations is part of (learning to) working with them.