捕获错误并拒绝承诺

Catch an error and reject the promise

我需要捕获错误并拒绝下面的承诺链。

这怎么可能

var deferred = new $.Deferred();
deferred.resolve();

deferred.then(function () {
  try {
    throw new Error();
  } catch (err) {
    return $.Deferred().reject();
  }
}).then(function () {
  console.log('success', arguments);
}, function () {
  console.log('fail', arguments);
});

在 jQuery 中被拒绝?我希望 fail,但有 success

尝试使用 jQuery 1.8 版,参见 deferred.then() , jQuery 1.8 Released , MAKE DEFERRED.THEN == DEFERRED.PIPE LIKE PROMISE/A

var deferred = new $.Deferred();
deferred.resolve();

deferred.then(function () {
  try {
    throw new Error();
  } catch (err) {
    return $.Deferred().reject();
  }
}).then(function () {
  console.log('success', arguments);
}, function () {
  console.log('fail', arguments);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js">
</script>