errorHandler.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { logger } from '../log/logger';
  2. /**
  3. * 设置全局错误处理监听器
  4. * 只在浏览器环境中生效
  5. */
  6. export const setupGlobalErrorHandlers = () => {
  7. // 只在浏览器环境中设置全局错误处理
  8. if (typeof window === 'undefined') return;
  9. // 处理未捕获的JavaScript错误和资源加载错误
  10. window.addEventListener('error', (event) => {
  11. const errorInfo = {
  12. type: 'uncaught_error',
  13. message: event.message,
  14. filename: event.filename,
  15. lineno: event.lineno,
  16. colno: event.colno,
  17. stack: event.error?.stack,
  18. timestamp: new Date().toISOString()
  19. };
  20. logger.error('全局错误捕获', errorInfo);
  21. // 可以选择是否阻止默认错误处理
  22. // event.preventDefault();
  23. });
  24. // 处理未处理的Promise拒绝
  25. window.addEventListener('unhandledrejection', (event) => {
  26. const errorInfo = {
  27. type: 'unhandled_rejection',
  28. reason: event.reason,
  29. timestamp: new Date().toISOString()
  30. };
  31. logger.error('未处理的Promise拒绝', errorInfo);
  32. // 可以选择是否阻止默认错误处理
  33. // event.preventDefault();
  34. });
  35. logger.log('全局错误处理监听器已设置');
  36. };