Я не эксперт в ООП, но вроде считается, что использование исключений лучше избегать, использовать их только в случае крайней необходимости. Например в Qt не принято их использовать, а это мега-фреймворк написанный на C++. Кстати, написав 20 кастомных Exception вам не надо писать 20 блоков catch, достаточно одного блока Exception. Если уж задумали их использовать, то лучше ограничиться несколькими видами Exception.
0.9*0.9*0.980.7*0.7 = 0.357. Про эту задачу можно подумать по-другому. Вероятность что первый комплект будет идеален = 0.9*0.9*0.9 = 0.729, второй комплект = 0.7*0.7 = 0.49. Вероятность что оба = 0.729 * 0.49 = 0.357.
Denis: целиком никогда и не получится передать, ОС передает информацию блоками и вы не можете контролировать их размер, каждый пакет может быть разного размера, используйте примеры из официальной документации.