Мой код ниже.Swift 2.0 обработка ошибок
enum NutritionalError: ErrorType {
case NotEnoughNutrients
case TooMuchNutrients
case Other
}
Как вы можете видеть, у меня есть NutritionalError of ErrorType с тремя различными случаями.
У меня есть функция обработки ошибок, которая работает как таковая.
func needs(fat: Double, carbohydrate: Double, protein: Double) throws {
let totalPercent = fat + carbohydrate + protein
guard totalPercent > 1 else {
throw NutritionalError.TooMuchNutrients
}
guard totalPercent < 1 else {
throw NutritionalError.NotEnoughNutrients
}
}
func calculateNeeds(calories: Int, fatPercent: Double, carbohydratePercent: Double, proteinPercent: Double) -> (Int, Int, Int) {
do {
try needs(fatPercent, carbohydrate: carbohydratePercent, protein: proteinPercent)
} catch NutritionalError.NotEnoughNutrients {
print("Not enought nutrients.")
} catch NutritionalError.TooMuchNutrients {
print("Too many nutrients.")
}
}
На линии.
try needs(fatPercent, carbohydrate: carbohydratePercent, protein: proteinPercent)
Я получаю сообщение об ошибке.
'Errors thrown from here are not handled because the enclosing catch is not exhaustive'
спасибо. Я только что нашел это, но я думаю, что у многих людей будет такая проблема, поэтому я буду поддерживать это. Также я посмотрел ваш профиль и возобновил работу, и я должен сказать «Впечатляюще»! –
На самом деле это не то, о чем говорит ошибка. В нем говорится, что он «не является исчерпывающим», что может означать многие вещи, а не только необходимость использования ограниченного улова. –