2013-01-30 2 views
1

У меня есть код с этим шаблоном - мне нужно вызвать next() как при успешном выполнении fn(), так и при наличии исключения в выводе fn().Лучшая практика для этого подхода к обработке исключений node.js?

try { 
    fn.call(obj, a, b, c, function(error, next) { 
      ... 
      next(); 
    }); 
} catch (ex) { 
    // log. 
    next(); // This is under question. 
} 

Исключение может происходить не только в fn, но и в любом месте в следующем(). Я не должен вызывать next() из catch, так как я не делаю, если исключение произошло откуда-то во время выполнения следующего.

Какой подход вы рекомендуете для этого шаблона?

ответ

0

Во-первых, я рекомендую вам взглянуть на try...catch block description (не против, что это для браузера JS). Можно ли разместить next() функцию внутри блока finally в вашем случае? Да, я предлагаю разместить его там и взять весь блок try...catch внутри другого try...catch блок.

Все еще бросание исключения в финализацию не является хорошей практикой. Вы уверены, что используете try...catch в нужном месте? Может быть, лучше сделать это внутри fn (или обработка wxception внутри функции error)?

+0

Дело в том, что next() должен быть вызван fn в обычном режиме, а не обработкой исключений. Поэтому обычно я хочу, чтобы следующий вызывался как часть обычного вызова функции. Но моя потребность в том, что если есть исключение, мне все равно нужно позвонить дальше из-за вызова функции. (Это не опция обработки исключений внутри этой функции.) Чтобы получить контроль над 'next()', я мог бы использовать Step, но он будет неуклюжим. Отсюда вопрос. – uniwalker

Смежные вопросы