当前位置:首页 > 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如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

如何调试react

如何调试react

调试 React 应用的方法 使用 React Developer Tools 安装浏览器扩展(Chrome/Firefox),通过组件树查看组件状态、props 和 hooks。支持实时编辑 pro…

如何关闭react

如何关闭react

关闭React应用的步骤 在开发或运行React应用时,可能需要关闭正在运行的开发服务器或停止应用。以下是几种常见情况的处理方法: 停止开发服务器 如果正在使用npm start或yarn star…

react如何引入

react如何引入

引入React的方法 React可以通过多种方式引入项目,具体取决于项目需求和开发环境。以下是常见的几种方法: 通过CDN引入 在HTML文件中直接通过CDN链接引入React和ReactDOM:…