Мій конкретний випадок тут полягає в тому, що користувач може передавати рядок у додаток, програма аналізує його і присвоює структурованим об'єктам. Іноді користувач може набрати щось недійсне. Наприклад, їх дані можуть описувати людину, але вони можуть сказати, що їх вік "яблучний". Правильна поведінка в такому випадку - це повернути транзакцію і повідомити користувачеві про помилку, і їм доведеться спробувати ще раз. Може виникнути вимога повідомляти про кожну помилку, яку ми можемо знайти у введенні, а не лише першу.
У цьому випадку я стверджував, що ми повинні кинути виняток. Він не погодився, сказавши: "Винятки повинні бути винятковими: Очікується, що користувач може вводити недійсні дані, тому це не винятковий випадок". Я не знав, як аргументувати це питання, тому що за визначенням слова він здається, правильно.
Але я розумію, що саме тому в першу чергу були винайдені винятки. Раніше вам довелося перевірити результат, щоб побачити, чи сталася помилка. Якщо ви не змогли перевірити, погані речі можуть статися, не помітивши.
Без винятку кожен рівень стека повинен перевіряти результат методів, які вони викликають, і якщо програміст забуде перевірити один з цих рівнів, код може випадково перейти і зберегти недійсні дані (наприклад). Здається, більше схильних до помилок.
У будь-якому разі сміливо виправляйте все, що я тут сказав. Моє головне питання: якщо хтось каже, що винятки мають бути винятковими, то як я можу знати, чи є моя виняток винятковою?