#javascript #websocket #dom-events
#javascript #websocket #dom-события
Вопрос:
Как мне обрабатывать неожиданные вещи, такие как странные данные, поврежденные данные, неожиданные данные или что-то происходит не так в прослушивателе событий.
WebSocket
предоставляет onmessage
прослушиватель событий. Если бы он получил что-то неожиданное, как с этим справиться? Путем создания исключения, входа в консоль, молчаливого игнорирования его?
- Если прослушиватель событий выдает исключение, то, я думаю, нет ничего, что могло бы перехватить это исключение. Это плохо?
- Использование
console.log
в рабочей среде плохое? - Если прослушиватель событий молча игнорирует сообщение? Разве это не плохо?
let socket = new WebSocket('wss://www.example.com/');
socket.onmessage = function (event) {
if (event.data === 'GARBAGE') {
// What is the appropriate thing to do here?
}
}
Ответ №1:
Это действительно зависит от вашего приложения и того, насколько критична проблема.
- Как правило, вывод выходных данных на консоль для производства, особенно ошибок, не такая уж хорошая вещь. Конечным пользователям может не понравиться видеть «ошибку» или «исключение» в журнале консоли, особенно, если приложение обрабатывает некоторую конфиденциальную информацию.
- При использовании console.log следует быть осторожным, особенно при печати некоторых переменных, так как это может привести к утечке памяти.
Игнорирование ошибки должно быть выбором по замыслу. Если вы получаете неожиданные данные на прослушиватель, это означает, что ваша система где-то работает не так, как предполагалось. По крайней мере, вы должны знать, почему вы получаете такой ввод.
Комментарии:
1. Если клиент получает неожиданные данные, это может быть связано с тем, что любой, кто использует библиотеку, использует ее вместе с сервером с ошибками.
2. Это нормально. Каковы последствия для системы / пользователя, когда он получает такой ввод?
3. Клиент будет сбит с толку и не будет знать, что делать с данными. Возможно, сбой, потому что что-то происходит
undefined
. В любом случае, не должна ли клиентская библиотека каким-то образом предупреждать пользователя библиотеки о том, что отправленное сервером является неожиданным?4. Если это библиотека, то в ее готовой форме она должна выполнять одно из следующих действий: возвращать коды ошибок для сбоев, создавая исключение. Значение ошибок / исключений должно быть описано в сопроводительной документации. Они могут быть использованы приложением для правильной обработки ошибки. Журнал консоли полезен только для отладки.
5. Да, но это не обычная функция. Это функция прослушивания событий, поэтому я не знаю, подходит ли выбрасывание исключения, поскольку его нечем перехватить.