alex4answ
@alex4answ

Стоит ли автоматически оборачивать в try catch?

Добрый день, начал замечать что у меня очень много шаблонного кода, особенно в middlewares Express.

const getUser = async (id) => {
  try {
    const response =  await fetch(`/users/${id}`);
    const user = response.json();
    // делать что-то с user
  } catch(err) {
    console.error(err); // к примеру просто в консоль
  }
};


Стоит ли автоматически оборачивать "полезный" код в try catch ?

Что-нибудь типа Декоратора
const tryCatchDecorator = (fn) => {
  return (...args) => {
    try {
      fn(...args);
    } catch(err) {
      console.error(err.message);
    }
  };
};

Или этого
const tryCatchWrapper = (callback) => {
  try {
    callback();
  } catch(err) {
    console.error(err);
  }
};

const getUser = async (id) => {
  const response =  await fetch(`/users/${id}`);
  const user = response.json();
  // делать что-то с user
};

const getUserWithTryCatch =  tryCatchDecorator(getUser); // Первый способ
const getUserWithTryCatch =  tryCatchWrapper((id) => getUser(id)); // Второй способ

getUserWithTryCatch(1);
tryCatchWrapper(getUser(1));


Почему ?

P.S. Речь идет только о шаблонных try/catch
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
Если это объективно улучшит ваш код - то стоит. Если нет, то не стоит.
Сам по себе такой прием ничего плохого не несет.
Но если у вас это все в мидлварах, то проще написать один обработчик ошибок который будет ловить все исключения в мидлварах, добавить его в express аппу, и остальному коду разрешить бросать исключения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час