React
1. 使用 window.addEventListener('error')
监听全局错误
可以尝试在全局添加一个 error
事件监听器,来捕获所有的未处理的错误。
window.addEventListener('error', function (event) {
console.error('Caught an unhandled error:', event.error)
})
更多信息请查看 Window: error event。
2. 使用类似 try...catch
的方式,捕获错误并及时处理
在开发过程中,应该尽量避免全局错误的出现,而是在代码中对可能发生的错误进行处理。例如,在使用 fetch
进行网络请求时,应该在 .catch()
中处理错误。
fetch('/api/some-endpoint')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error occurred:', error))
更多信息请查看 Error handling in JavaScript。
3、在React中可以使用 componentDidCatch
进行错误边界处理:
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
// Update state so the next render will show the fallback UI.
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
// You can also log the error to an error reporting service
console.error('Error occurred:', error, errorInfo)
}
render() {
if (this.state.hasError) {
// You can render any custom fallback UI
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
export default ErrorBoundary;