Обработка ошибок с переключением в JavaScript

Недавно я наткнулся на этот интересный фрагмент кода из одной из библиотек Shopify для Node.js. В нем используется интересный способ обработки ошибок с помощью оператора switch-case.

try {
  // ...
} catch (e) {
  switch (true) {
    case e instanceof Shopify.Errors.InvalidOAuthError:
      res.status(400);
      res.send(e.message);
      break;
    case e instanceof Shopify.Errors.CookieNotFound:
    case e instanceof Shopify.Errors.SessionNotFound:
      // This is likely because the OAuth session cookie expired before the merchant approved the request
      res.redirect(`/auth?shop=${req.query.shop}`);
      break;
    default:
      res.status(500);
      res.send(e.message);
      break;
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Этот оператор не обязательно короче, чем его аналог в виде лестницы if-else, и в большинстве случаев имеет смысл только в том случае, если вы имеете дело с библиотекой, построенной с использованием различных классов Error. Кроме того, аспекты производительности и читабельности являются предметом споров. Что вы думаете?

Оцените статью
Procodings.ru
Добавить комментарий