我有以下两个文件:
//index.js
ReactDOM.render(<App />, document.getElementById('root'));
和
// App.js
setTimeout(() => { throw new Error('An error')}, 3000)
class App extends Component {
render() {return (<div>Hello</div>)}
}
我想在App.js
文件之外(可能在index.js
中)捕获此错误。我尝试使用ErrorBoundries
(https://reactjs.org/docs/error-boundaries.html),但显然不会捕获组件生命周期之外的错误。
有人建议我使用window.onerror
错误处理程序。我对这种方法的担心是,即使外部库之一抛出错误,也会触发该错误。对此有何评论?
答案 0 :(得分:0)
如果您尝试全局捕获不包含第三者的错误,那么不要throw
自己的错误,只需使用一个函数并扔在那里
使用您的确切代码:
// utils.js
export default {
throw: err => { throw new Error(err) }
}
// App.js
import utils from 'utils'
setTimeout(() => { utils.throw('An error') }, 3000)
class App extends Component {
render() {return (<div>Hello</div>)}
}