Можно ли поймать несколько исключений только одним блоком try-catch? - PullRequest
2 голосов
/ 29 ноября 2011

В этом коде javascript f.init() контролировать весь поток программы:

var f = function() {
    return {
        init: function(var1) {
            try {
                f.f1(1)
            } catch (e) {
                alert(e);
            }
            try {
                f.f2(1)
            } catch (e) {
                alert(e);
            }
            // ...
            // more try-catch blocks                
            // ...
        },
        f1: function() {
            throw Error('f1 called');
        },
        f2: function() {
            throw Error('f2 called');
        }
    };
}();

f.init();

Как можно централизовать управление всеми исключениями только в одном блоке try-catch? Как то так:

var f = function() {
    return {
        init: function(var1) {
            f.f1(1) // this cut the control flow if thrown some error
            f.f2(1) // so this is not called
        },
        f1: function() {
                throw Error('f1 called');
        },
        f2: function() {
                throw Error('f2 called');
        }
    };
}();

try {
    f.init();
} catch (e) {
    alert(e);
}

Предыдущий код обрезал поток после выдачи некоторой ошибки.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

Вы не можете. При возникновении ошибки поток программы прерывается.

0 голосов
/ 11 августа 2015

Вы не можете. Но есть хитрость для обработки нескольких уловов:

try{

 try{
   firstTrial();
 }
 catch(e1){
   secondTrial();
 }

}catch(e2){
   thirdTrial();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...