Чи корисно використовувати винятки та кидати / ловити винятки, а не повертати 0 або 1 з функцій, а потім використовувати if / else для обробки помилок. Таким чином, полегшуючи інформування користувача про проблему.
Ні-ні-ні!
Не змішуйте винятки та помилки. Винятки є, ну, винятковими. Помилок немає. Коли ви запитуєте користувача ввести кількість товару, а користувач вводить "привіт", це помилка. Це не виняток: немає нічого виняткового в тому, щоб побачити недійсний вхід від користувача. Чому ви не можете використовувати винятки в не виняткових випадках, наприклад, під час перевірки введення? Інші люди це вже пояснили та показали дійсну альтернативу для перевірки введення даних.
Це також означає, що користувач не піклується про ваші винятки , а показ винятків є недоброзичливим і небезпечним . Наприклад, виняток під час виконання запиту SQL часто виявляє сам запит. Ви впевнені, що хочете ризикнути показати таке повідомлення всім?
більше ніж одна річ може піти не так, як, наприклад, проблема з базою даних, копія запису, проблема із сервером тощо. Коли проблема трапляється під час реєстрації, користувач повинен знати про це.
Неправильно. Як користувач, мені не потрібно знати ваші проблеми з базою даних, дублікати записів і т. Д. Мені справді не цікаво ваших проблем. Що мені робити потрібно знати, що я увійшов в ім'я користувача , яке вже існує. Як уже було сказано, неправильне введення від мене повинно викликати помилку, а не виняток.
Як вивести ці помилки? Це залежить від контексту. Для вже використовуваного імені користувача я хотів би побачити невеликий червоний прапор, який з’являється біля імені користувача, перш ніж навіть надсилати форму, кажучи, що ім’я користувача вже використовується. Без JavaScript, той самий прапор повинен з’явитися після надсилання.
У разі інших помилок ви б показали повну сторінку з помилкою або обрали інший спосіб повідомити користувача про те, що щось пішло не так (наприклад, повідомлення, яке з’явиться, а потім зникне вгорі сторінки). Тоді питання стосується більше досвіду користувачів, ніж програмування.
З точки зору програмістів, залежно від типу помилки, ви поширите її різними способами. Наприклад, у випадку вже взятого імені користувача, запит AJAX http://example.com/?ajax=1&user-exists=John
повернути об'єкт JSON із зазначенням:
- Що користувач вже існує,
- Повідомлення про помилку, яке потрібно показати користувачеві.
Важливий другий момент: ви хочете бути впевненим, що те саме повідомлення з’являється і при поданні форми з відключеною JavaScript, і при введенні дубліката імені користувача з увімкненим JavaScript. Ви не хочете дублювати текст повідомлення про помилку у вихідному коді на сервері та в JavaScript!
Це фактично техніка, що використовується на веб-сайтах Stack Exhange. Наприклад, якщо я намагаюся підтвердити власну відповідь, відповідь AJAX містить помилку для відображення:
{"Success":false,"Warning":false,"NewScore":0,"Message":"You can't vote for your own post.",
"Refresh":false}
Ви також можете вибрати інший підхід та встановити помилки на HTML-сторінці до заповнення форми. Плюси: вам не потрібно надсилати повідомлення про помилку у відповіді AJAX. Мінуси: як щодо доступності? Спробуйте переглядати сторінку без CSS, і ви побачите всі можливі помилки.