reactjs - 如何在React应用程序中全局捕获错误

标签 reactjs error-handling try-catch

我有以下两个文件:

//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错误处理程序。我对这种方法的担心是,即使外部库之一抛出错误,也会被触发。对此有何评论?

最佳答案

如果您试图在全局范围内捕获不包含第三方 Material 的错误,请不要使用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>)}
}

关于reactjs - 如何在React应用程序中全局捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865602/

相关文章:

html - 通过单击 ReactJS 中的按钮下载文件

r - 从网上下载多个文件时如何跳过丢失的文件?

java - 尝试捕捉性能 Java

c# - .NET IBM DB2BulkCopy-确定是否由于错误导致插入失败

javascript - 输入无效字符时JavaScript返回错误消息

c++ - 如何在错误情况与非错误情况下处理对象破坏

spring-mvc - 简化 Controller 中的异常捕获

javascript - 循环访问对象时出错

javascript - 从对象内部的对象中查找未定义或空值

javascript - 如何隐藏按钮,直到所有字段都被填充以与钩子(Hook) react