当前位置:首页 > React

react如何接收异常

2026-03-30 23:29:22React

在React中接收和处理异常可以通过多种方式实现,以下是一些常见的方法:

错误边界(Error Boundaries)

错误边界是React组件,用于捕获子组件树中的JavaScript错误,并展示降级UI而非崩溃的组件树。通过定义static getDerivedStateFromError()componentDidCatch()生命周期方法实现。

class ErrorBoundary extends React.Component {
  state = { hasError: false };

  static getDerivedStateFromError(error) {
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    console.error("Caught error:", error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      return <h1>Something went wrong.</h1>;
    }
    return this.props.children;
  }
}

使用方式是将组件包裹在错误边界中:

react如何接收异常

<ErrorBoundary>
  <MyComponent />
</ErrorBoundary>

try/catch捕获同步错误

对于组件内部的同步代码,可以使用传统的try/catch捕获异常:

function MyComponent() {
  try {
    // 可能抛出错误的代码
  } catch (error) {
    console.error(error);
    return <div>Error occurred</div>;
  }
  return <div>Normal content</div>;
}

异步错误处理

对于异步操作(如fetchsetTimeout),需要在Promise的catch中处理错误:

react如何接收异常

useEffect(() => {
  fetchData()
    .then(data => setState(data))
    .catch(error => {
      console.error(error);
      setErrorState(true);
    });
}, []);

全局错误监听

通过window.onerrorwindow.addEventListener('error')捕获全局未处理的错误:

window.addEventListener('error', (event) => {
  console.error('Global error:', event.error);
});

未捕获的Promise错误

监听unhandledrejection事件捕获未处理的Promise拒绝:

window.addEventListener('unhandledrejection', (event) => {
  console.error('Unhandled rejection:', event.reason);
});

注意事项

  • 错误边界无法捕获事件处理器、异步代码、服务端渲染错误或错误边界自身抛出的错误。
  • 生产环境应结合监控工具(如Sentry)收集错误信息。
  • 对于表单验证等场景,建议使用受控组件和状态管理而非异常。

标签: 异常react
分享给朋友:

相关文章

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

如何同步react

如何同步react

同步React组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react如何减少setState

react如何减少setState

减少 React 中 setState 调用的方法 合并多次状态更新 使用函数式更新方式合并多次 setState 调用。React 会将多次状态更新批量处理,避免不必要的重新渲染。 // 非函…

如何监控react性能

如何监控react性能

使用 React Profiler API React 16.5 及以上版本内置了 Profiler API,可直接测量组件渲染时间。通过 <React.Profiler> 包裹目标组件,…

小白如何搭建react

小白如何搭建react

安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网下载安装包(https://nodejs.org/),选择 LTS 版本。安装完成后,终端运行以下命令验证版…