Самое большое недоразумение для меня в Swift - ключевое слово throws
. Рассмотрим следующий фрагмент кода:
func myUsefulFunction() throws
Мы не можем понять, какую ошибку он будет бросать. Единственное, что мы знаем, это то, что это может вызвать некоторую ошибку. Единственный способ понять, что может быть с ошибкой, - это посмотреть документацию или проверить ошибку во время выполнения.
Но разве это не против природы Свифта? У Swift есть мощные дженерики и система типов, чтобы сделать код выразительным, но кажется, что throws
противоположно, потому что вы не можете получить что-либо об ошибке от поиска сигнатуры функции.
Почему это так? Или я пропустил что-то важное и принял концепцию?