Попытка разобрать JSON без сбоя сервера Node.js - PullRequest
6 голосов
/ 22 августа 2010

Я разрабатываю проект с использованием Node.js на резервной основе, при этом я также использую JSON для передачи данных клиентам и через них через веб-сокеты.У меня проблема в том, что если на сервер была отправлена ​​неверная строка (это легко сделать, если пользователь возится с консолью JavaScript), то сервер может потерпеть крах при попытке ее проанализировать.

Текущий метод, который у меня естьдля предотвращения этого возникновения используется оператор try / catch.

Мой вопрос: есть ли более правильный способ проверки, является ли строка доступной для анализа?Кроме того, является ли использование операторов try / catch хорошей практикой или они предназначены только для отладки?

Спасибо.

Ответы [ 2 ]

10 голосов
/ 31 августа 2010

Приведенный выше ответ хорош. Но вы также должны установить прослушиватель для необработанных исключений в node.js. Таким образом, вы можете регистрировать исключения, и ваш сервер продолжит работать.

http://nodejs.org/api/process.html#process_event_uncaughtexception

4 голосов
/ 22 августа 2010

Использование try / catch необходимо для создания надежного кода во многих средах - очень важно для корректной обработки ошибок.

Однако, когда вы принимаете данные из внешнего источника, вы должны проверять их, чтобы убедиться, что вы не открыли вектор атаки.

В этом модуле узла есть пара элементов JSON, включая схему JSON, которые могут помочь: https://github.com/kriszyp/json-schema

...