Swift всегда стремился к безопасности типов, и появление typed throws в версии 6 — это шаг, которого ждали многие разработчики. Теперь можно явно указывать, какие ошибки выбрасывает функция. Это превращает код из «лови всё подряд» в строгий контракт: если функция помечена throws(MyError), она действительно не сможет бросить ничего кроме MyError. Раньше throw в Swift напоминал «чёрный ящик»: функция могла вернуть любую ошибку, и компилятору это было всё равно. В итоге:
⚠️ разработчик писал catch { ... }, не понимая, с чем работает;
🔄 приходилось создавать громоздкие enum'ы ошибок без чёткой иерархии;
📉 пользователь часто видел «riddle-style» сообщения вроде "NSCocoaErrorDomain Code=4" вместо нормального текста. Typed throws решает это, превращая обработку ошибок в часть интерфейса функции. Автор статьи The Swift Dev предложил элегантное расширение: протокол SystemError, который добавляет к стандартному Error: 🪵 logMessage — текст для логов разработчика;
🙂 userFriendlyMessage — понят