Everybody knows you\'re not supposed to compare floats directly, but rather using a tolerance:
float a,b;
float epsilon = 1e-6f;
bool equal = (fabs(a-b) < eps
Only a division by exactly 0.f will raise a division by zero exception.
However, division by a really small number can generate an overflow exception - the result is so large that it no longer can be represented by a float. The division will return infinity.
The float representation of infinity can be used in calculations so there might not be a need to check for it if the rest of your implementation can handle it.