| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import { logger } from '../log/logger';
- /**
- * 设置全局错误处理监听器
- * 只在浏览器环境中生效
- */
- export const setupGlobalErrorHandlers = () => {
- // 只在浏览器环境中设置全局错误处理
- if (typeof window === 'undefined') return;
- // 处理未捕获的JavaScript错误和资源加载错误
- window.addEventListener('error', (event) => {
- const errorInfo = {
- type: 'uncaught_error',
- message: event.message,
- filename: event.filename,
- lineno: event.lineno,
- colno: event.colno,
- stack: event.error?.stack,
- timestamp: new Date().toISOString()
- };
- logger.error('全局错误捕获', errorInfo);
- // 可以选择是否阻止默认错误处理
- // event.preventDefault();
- });
- // 处理未处理的Promise拒绝
- window.addEventListener('unhandledrejection', (event) => {
- const errorInfo = {
- type: 'unhandled_rejection',
- reason: event.reason,
- timestamp: new Date().toISOString()
- };
- logger.error('未处理的Promise拒绝', errorInfo);
- // 可以选择是否阻止默认错误处理
- // event.preventDefault();
- });
- logger.log('全局错误处理监听器已设置');
- };
|