У меня ошибка с метанием ошибок? Что я должен делать? - PullRequest
0 голосов
/ 02 ноября 2019

Я недавно пытался запустить этот код

extension String: Error {} //string isn't throw-able by default 

func throwingFunction() throws { //this function always throws on call. So far so good
    throw "error"
}

switch try throwingFunction() {
    case "error": print("It works!") //but it doesn't 
    default: break
}

Ошибка expression pattern of type 'String' cannot match values of type '()' Разве эта функция не должна возвращать необработанную строку? Я делаю что-то неправильно? Пожалуйста, помогите.

1 Ответ

0 голосов
/ 02 ноября 2019

throwingFunction() возвращает Void aka (), если не выдает ошибку. Вы не можете включить Void.

Так что вам нужно try, чтобы выполнить функцию и поймать error, тогда вы можете включить сам error.

do {
    try throwingFunction()
} catch {
    switch error as! String { // Since you know the error type, It's perfectly safe to force unwrap
    case "error": print("It works!")
    default: break
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...