Вы можете снова сгенерировать исключение или обработать его.
Если вы хотите обработать его, вам нужно заключить код в do-catch, а затем:
let processor: (MyBuffer) -> MyBuffer{ buffer in
do{
let outputBuffer = try self.processBuffer(self, inputBuffer: buffer)
return outputBuffer
}catch HERE_THE_ERROR_TYPE{
//HERE HOW TO HANDLE THE ERROR
}
}
Более того, выесли вы хотите выдать ошибку:
let processor: (MyBuffer) throws -> MyBuffer{ buffer in
let outputBuffer = try self.processBuffer(self, inputBuffer: buffer)
return output
}
Затем вы можете обработать ошибку при вызове закрытия или сбросить ее снова.
Теперь обратите внимание, что если ваша функция выдает ошибку, выможет справиться с опциями, как вы сделали.Это означает, что вы должны обработать или проверить необязательное значение (guard-let, if-let или что вы предпочитаете).Вот почему, если функция processBuffer выдает ошибку, она присвоит outputBuffer значение nil, это означает, что вам не нужно объявление throws:
let processor: (MyBuffer) -> MyBuffer?{ buffer in
let outputBuffer = try? self.processBuffer(self, inputBuffer: buffer)
//HERE YOU CAN CHECK IF OUTPUT_BUFFER IS NIL OR NOT
// Otherwise a nil value can be returned
return output
}
Для получения дополнительной информации проверьте эту документацию: Быстрая обработка ошибок