В чем разница между ошибкой throw и console.error
В чем разница между этими двумя утверждениями и есть ли веская причина использовать один над другим?
throw Error("msg");
console.error("msg");
В моем ограниченном опыте я действительно видел только throw Error()
. Есть ли какая-то особая причина?
Кроме того, существует ли эквивалент console.warn()
тем же способом?
Ответы
Ответ 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();
}
});
};