Недавно я столкнулся с этой проблемой и заметил, что вам не нужен блок try/catch. В транспортир, вы можете достичь TRY/поймать как следующее:
try { <---------------------------- Traditional TRY/CATCH method
loadWebApp();
login();
openUserPreferences();
changePassword();
} catch (err) {
console.error(
"An error was thrown! " + err);
}
loadWebApp().
then(login).
then(openUserPreferences).
then(changePassword).
then(null, function(err) { <----------------- PROTRACTOR equivalent of try/catch
console.error(
"An error was thrown! " + err);
});
Вот источник, где я получил эту информацию от: https://code.google.com/p/selenium/wiki/WebDriverJs#Promises
под Value Propagation and Chaining
Так опять же, вам не нужно явно добавлять попробовать/поймать.
Короче говоря, причина этот метод работает, потому что a promise can either be RESOLVED or REJECTED and in case of a rejected or failed promise, this line [ then(null, function(err) { ... } ] will act as the CATCH block.
заметить также, что тогда (нуль, функция (ERR)) (не принимает никакого обратного вызова, но лишь errBack, поэтому в основном, это говорит, что мы не заботиться о том, разрешено ли обещание, мы заботимся только о том, не сработает ли он и, следовательно, NULL для обратного вызова и функция (ошибка) для errBack.
Не нужно обертывать это в try/catch, а затем бросать ошибку, как было предложено выше, принятый ответ (@Eitan Peer).
Надеюсь, что это помогает кому-то, кто борется с Транспортером, как и я.
Я не знал, что это возможно! Тебе не нужно «пытаться поймать» в этот момент, если нет аль isterener или более крупный обработчик для родителя, который теперь делает это грязным в консоли. На данный момент это почти бесполезно. Но серьезно, обратный вызов ошибки просто спас мне жизнь. Благодаря! –