Javascript 如何处理react路由器子路由中引发的异常

Javascript 如何处理react路由器子路由中引发的异常,javascript,reactjs,exception,exception-handling,react-router,Javascript,Reactjs,Exception,Exception Handling,React Router,我对react的异常处理有问题-router@3.0.0 我的路由器是这样连接的: try { ReactDOM.render(<Router history={appHistory}> <Route path='/' component={Wrapper}> <Route path='bad' component={BadComponent}/> </Route> </Router>, domEle

我对
react的异常处理有问题-router@3.0.0

我的路由器是这样连接的:

try {
  ReactDOM.render(<Router history={appHistory}>
    <Route path='/' component={Wrapper}>
      <Route path='bad' component={BadComponent}/>
    </Route>
  </Router>, domElement);
} catch(ex) {
  ReactDOM.render(<Exception ex={ex}/>, domElement);
}
试试看{
ReactDOM.render(
,domElement);
}捕获(ex){
ReactDOM.render(,domeElement);
}
我的问题是,如果
Wrapper
抛出一个渲染异常,我们最终将进入catch块。太好了

如果
Wrapper
工作正常,但
BadComponent
抛出渲染异常,则我们不会。嘘

如果我们到达这一点,那么路由器将完全停止工作,我们无法导航到任何已知的好路由

react路由器API没有提到错误处理,所以我有点卡住了


有没有办法将异常恢复到顶层,使其正常失败?

我知道现在回答这个问题可能太晚了,您可能已经找到了解决方案,甚至不再使用此代码


如果您还没有发现,请检查react offers的错误边界

我认为没有办法做到这一点。但我想知道。。。为什么要捕获渲染异常?为什么不调试组件呢?如果我输入了错别字,那么更多的是用户体验,而不是开发辅助。捕捉组件中的异常并破坏整个渲染树看起来非常脆弱,这与我使用的其他React库不同。当然,路由器应该记录并抛出?我很确定你所问的是不可能的,除非你把每个组件都打包成一个try-catch。不过,在将构建推送到实时环境之前,您应该再次测试组件。