Por que 'lances' não é do tipo seguro no Swift?

O maior mal-entendido para mim em Swift é othrows palavra-chave Considere o seguinte pedaço de código:

func myUsefulFunction() throws

Não podemos realmente entender que tipo de erro isso irá gerar. A única coisa que sabemos é que isso pode gerar algum erro. A única maneira de entender qual pode ser o erro é consultando a documentação ou verificando o erro no tempo de execução.

Mas isso não é contra a natureza de Swift? Swift possui genéricos poderosos e um sistema de tipos para tornar o código expressivo, mas parece quethrows é exatamente o oposto, porque você não pode obter nada sobre o erro olhando a assinatura da função.

Por que? Ou eu perdi algo importante e confundi o conceito?

questionAnswers(2)

yourAnswerToTheQuestion