Представь, что ты получаешь сообщение от клиента по сети - "не удалось открыть соединение" и "клиент прислал сообщение, не соответствующее протоколу" - разные ошибки, которые могут возникнуть, условно, в одном месте, и обрабатывать их надо, очевидно, совершенно по-разному