Why do we still have to write `catch let error as SystemError`? Why can't the error be inferred to have the type thrown by the function? I've always found swift's error handling syntax to be awkward
`static func validate(name: String) throws(ValidationError)`
Would be handled as:
```
do {
try UsernameValidator.validate(name: name)
} catch { switch error {
case .emptyName:
print("You've submitted an empty name!")
case .nameTooShort(let nameLength):
print("The submitted name is too short!")
}
}```