Показать сообщение отдельно
  #1 (permalink)  
Старый 23.01.2012, 01:24
Аватар для Родзевич Олег
Интересующийся
Отправить личное сообщение для Родзевич Олег Посмотреть профиль Найти все сообщения от Родзевич Олег
 
Регистрация: 08.04.2010
Сообщений: 16

try/catch асинхронных действий
Приветствую всех!

Вопрос по nodejs. Подскажите - как ловить ексепшены асинхронных действи?

Вот пример кода:
try {

    var http = require('http');

    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.end('Hello World\n');
    }).listen(8080, function () {
        console.log("Server start");
        console.log(JSON.stringify(arguments));
    }).listen(8082, function () {
        console.log("Server start");
        console.log(JSON.stringify(arguments));
    });

} catch (error) {
    // сюда код не доходит!!!
    console.log("Error"+error);
}


Предположим, что у меня на сервере один из портов занят, например, 8080, то конструкция listen выдает ошибку. Ситуация вполне рядовая, необходимо эту ошибку впоймать и как-то её обработать. Стандартные средства try/catch не подходят, в данном примере вываливается необработанный эксепшен и останавливается процесс.

Подозреваю, что это связано с асинхронными действиями.
Ребята, подскажите, как с этим бороться?
Ответить с цитированием