A exceção da divisão por zero ocorre apenas quando os dois operandos são inteiros (porque nesse caso o zero é absolutamente zero, nem mais nem menos).
Quando se trata de ponto-flutuante (double ou float), a divisão por zero é definida como:
0.0 / 0.0 -> resultado = NaN (“Not-a-Number”, ou seja, é um “não-número”. Assim como um troll é “não-humano”. )
(número positivo) / 0.0 = +Infinity
(número negativo) / 0.0 = -Infinity
(número positivo) / -0.0 = -Infinity
(número negativo) / -0.0 = +Infinity
A idéia é que o zero, em ponto flutuante, não representa exatamente o número zero, mas uma aproximação desse número. Como você já deve ter percebido, dividir um número qualquer por um número muito pequeno resulta em um número muito grande. Se você extrapolar para o menor número possível (zero) então você obterá o maior número possível (infinito).
Isso ocorre em várias linguagens (como C, VB e Delphi), até porque é o próprio processador, através de suas instruções, que define esse comportamento.