В Chrome (но не в Firefox), JSON.parse ("") завершается с ошибкой сценария. Вы можете воспроизвести его, запустив сценарий выше или запустив https://jsfiddle.net/xupf27nh/1/. Почему ...

3
phil294 18 Янв 2021 в 16:31

1 ответ

Лучший ответ

Браузеры намеренно скрывают ошибки, возникающие из файлов сценариев из разных источников в целях безопасности. В этом случае из-за настройки CORS ошибка, возвращаемая JSON.parse, рассматривается как другое происхождение и поэтому скрывается вашим браузером.

Однако, когда вы инкапсулируете с помощью try\catch, ваш код вызывает ошибку:

try {
    JSON.parse("")
} catch(e) {
    // your browser see an error thrown from here : your code
    throw e;
}

Поэтому ваш браузер Chrome не определяет ошибку из другого источника, это та же причина, по которой ошибка a.b.c.d.e.f() отображается правильно: она определяется как ошибка, выданная вашим кодом.

Обратите внимание, что браузеры имеют разные спецификации и реализации (и ошибки) политики CORS, поэтому они могут вести себя иначе, как здесь.

Подробнее об этой конкретной ошибке сценария можно узнать здесь: https: // blog.sentry.io/2016/05/17/what-is-script-error

5
Jean Bouvattier 18 Янв 2021 в 14:52