Как управлять «неперехваченными исключениями» в JavaScript, чтобы отображать сообщение об ошибке в пользовательском интерфейсе? - PullRequest
0 голосов
/ 19 июня 2020

Когда на каком-либо веб-сайте или веб-приложении генерируется неперехваченное исключение, в инструментах Develper каждого браузера появляется ошибка.

uncaught_exception

In Electron , например, если неперехваченное исключение, разработчик может установите слушателя и делайте все, что я хочу, с сообщением об ошибке:

process.on('uncaughtException', function (error) {
    // Handle the error
}

Итак, мне интересно, есть ли простой способ сделать то же самое в JavaScript. Это может быть полезно для записи и хранения распространенных ошибок, когда пользователи работают, или для того, чтобы показать, что происходит, пользователю, который может отправлять отзывы разработчикам.

Вместо этого можно показать что-то подобное

modal_exception

Sometimes, if an error occurs the app become in a unstable state where everything is frozen, and the user do not know why. I think informing about the error is important.

I found this Ошибка JavaScript объект. Его можно выбросить вручную, но это можно использовать только при использовании try и catch, а не для неперехваченных исключений, где разработчик допустил некоторые ошибки.

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Вы можете обрабатывать его как прослушиватель событий на объекте окна.

window.onunhandledrejection = event => {
  console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};

window.onerror = function(message, source, lineNumber, colno, error) {
  console.warn(`UNHANDLED ERROR: ${error.stack}`);
};

Или также так:

 window.addEventListener('error', function(event) { ... })

Подробнее о событии unhandledrejection можно прочитать в Веб-документы MDN здесь и событие onerror в документах здесь

0 голосов
/ 19 июня 2020
try {
  // YOUR CODE GOES HERE
} catch (e) {
 if ( e instanceof CustomExceptionError ) {
    // ...
  } else if ( e instanceof OtherExceptionError ) {
    // ...
  } else {
    // ...
  }
 //OR CALL THE ALERT BOX OR ANY OTHER UI CHANGE
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...