Подтвердить что ты не робот

В чем разница между ошибкой throw и console.error

В чем разница между этими двумя утверждениями и есть ли веская причина использовать один над другим?

throw Error("msg");
console.error("msg");

В моем ограниченном опыте я действительно видел только throw Error(). Есть ли какая-то особая причина?

Кроме того, существует ли эквивалент console.warn() тем же способом?

4b9b3361

Ответ 1

throw ... вызывает исключение в текущем блоке кода и заставляет его выйти или перейти к следующему выражению catch, если он поднят в блоке try.

console.error просто распечатывает красное сообщение для консоли разработчика javascript для разработчиков браузера и не вызывает никаких изменений в потоке выполнения.

Ответ 2

Некоторые из отличий:

throw Error ( "msg" ):

  • Остановка выполнения js.
  • В основном используется для целей обработки кода.
  • Может изменять основной поток выполнения.
  • Этот синтаксис в основном одинаковый для всех браузеров, поскольку это указано и подтверждено W3C.

console.error( "сообщение" ):

  • Он просто показывает вывод в красном цвете на консоли браузера.
  • В основном используется для печати значений для целей отладки.
  • Невозможно повредить основной поток выполнения.
  • Этот синтаксис иногда меняется в зависимости от браузера поставщика и не стандартизован W3C.

    то есть. Для синтаксиса, принятого в IE, есть window.console.debug("msg")

Ответ 3

Throw - это фактически изменение управляющего потока (переход от текущего контекста и до обработчика ошибок) для программной обработки ошибок. Консольный оператор предназначен только для отладки и печати текста на консоли ошибок. Вы можете видеть, что они используются вместе, например:

var doSomethingDangerous = function(response) {
   if (isMalformed(response)) {
     throw Error('Response is malformed.');
   }
   process(response);
};

var sendAsyncRequest = function() {
  var request = buildAsyncRequest();
  request.sendThen(function (response) {
     try {
       doSomethingDangerous(response);
     } catch (e) {
       console.error(e);
       doSomeAdditionalErrorHandling();
     }
  });
};