diff --git a/src/components/ErrorBoundary.jsx b/src/components/ErrorBoundary.jsx
new file mode 100644
index 0000000..8c9164c
--- /dev/null
+++ b/src/components/ErrorBoundary.jsx
@@ -0,0 +1,33 @@
+import React, { PureComponent } from 'react'
+import { Result } from 'antd'
+
+// 参考文档:
+// https://zh-hans.react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary
+// https://juejin.cn/post/7168720873006825503
+// https://github.com/bvaughn/react-error-boundary/tree/master
+
+class ErrorBoundary extends PureComponent {
+ constructor(props) {
+ super(props);
+ this.state = { hasError: false }
+ }
+
+ componentDidCatch(error, info) {
+ console.error('Sorry, Something went wrong.')
+ console.error(error)
+ this.setState({ hasError: true })
+ }
+
+ render() {
+ if (this.state.hasError) {
+ return
+ }
+ return this.props.children
+ }
+}
+
+export default ErrorBoundary
\ No newline at end of file
diff --git a/src/views/App.jsx b/src/views/App.jsx
index 191f049..c1b8198 100644
--- a/src/views/App.jsx
+++ b/src/views/App.jsx
@@ -2,6 +2,7 @@ import { Outlet, Link, useHref, NavLink } from 'react-router-dom'
import { useRef, useEffect, useState } from 'react'
import { Layout, Menu, ConfigProvider, theme, Empty, Row, Col, Dropdown, Space, Typography, Result, Select, App as AntApp } from 'antd'
import { DownOutlined } from "@ant-design/icons";
+import ErrorBoundary from '@/components/ErrorBoundary';
import zhLocale from 'antd/locale/zh_CN';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
@@ -130,7 +131,9 @@ function App() {
renderEmpty={globalEmpty}
>
+
{renderLayout()}
+
)