Почему не выпадает Exception?

Всем известно что делить на ноль нельзя (просто вот нельзя и всё). Хотя с математической стороны по сути при делении на ноль должна выходить бесконечность, но в C# предусмотрены исключения на случай если нерадивый программист ( я ) будет делить на ноль.

И действительно, когда пробуешь поделить:

int aa = 5;
int cc = aa / 0;
Console.WriteLine(cc);

Ожидаемо получаем:

Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero.
   at ConsoleAppTEST.Program.Main(String[] args) in C:\Users\p\Documents\Visual Studio 2017\Projects\test projects\TEST\ConsoleAppTEST\ConsoleAppTEST\Program.cs:line 96

Так, с этим всё ясно.

Но вот захотелось мне поиграться с числами, и случайно обнаружил, что таки блин можно без исключений (и их обработки) делить на ноль...

Вот пример:

 double bb = 5;

double cc = bb / 0;

Console.WriteLine(cc);

И вот такой неожиданный вывод:

8
Press any key to continue . . .

И в чём прикол?

Исключение не возникает потому что для double не существует абсолютного нуля. Где-то там после n-ного знака после запятой всё равно начинается какая-то числовая последовательность.

По этому при делении на ноль, компилятор не делит на ноль, а на число, максимально приближённое к нулю. Как результат, на выходе мы имеем не исключение, а какое-то число.

Как видно на скриншоте программы, переменная cc принимает значение бесконечности, что в консоли будет выглядеть как '?'. (Почему у тебя там '8' - одному богу известно).