Это хорошая практика - использовать исключения и генерировать / перехватывать исключения, а не возвращать 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, и вы увидите все возможные ошибки.