uncaught.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. var isBrowser = require('./isBrowser');
  2. var SingleEmitter = require('./SingleEmitter');
  3. var isOn = false;
  4. exports = {
  5. start: function() {
  6. isOn = true;
  7. },
  8. stop: function() {
  9. isOn = false;
  10. }
  11. };
  12. SingleEmitter.mixin(exports);
  13. if (isBrowser) {
  14. window.addEventListener('error', function(event) {
  15. if (event.error) {
  16. callListeners(event.error);
  17. } else if (event.message) {
  18. var e = new Error(event.message);
  19. e.stack = 'Error: '
  20. .concat(event.message, ' \n at ')
  21. .concat(event.filename, ':')
  22. .concat(event.lineno, ':')
  23. .concat(event.colno);
  24. callListeners(e);
  25. }
  26. });
  27. window.addEventListener('unhandledrejection', function(e) {
  28. callListeners(e.reason);
  29. });
  30. } else {
  31. process.on('uncaughtException', callListeners);
  32. process.on('unhandledRejection', callListeners);
  33. }
  34. function callListeners(err) {
  35. if (!isOn) return;
  36. exports.emit(err);
  37. }
  38. module.exports = exports;