mirror of
https://github.com/reactjs/react.dev.git
synced 2026-02-25 05:03:07 +00:00
Add Babel plugin note to Error boundaries post (#10313)
* Add Babel plugin note to Error boundaries post * Added section with screenshots * Add context to Component stack traces * Update 2017-07-26-error-handling-in-react-16.md * Move section, more minor changes * Change pics
This commit is contained in:
committed by
Dan Abramov
parent
9bff669f9f
commit
c82dd413aa
@@ -32,7 +32,7 @@ class ErrorBoundary extends React.Component {
|
||||
// You can also log the error to an error reporting service
|
||||
logErrorToMyService(error, info);
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
if (this.state.hasError) {
|
||||
// You can render any custom fallback UI
|
||||
@@ -75,6 +75,18 @@ For example, Facebook Messenger wraps content of the sidebar, the info panel, th
|
||||
|
||||
We also encourage you to use JS error reporting services (or build your own) so that you can learn about unhandled exceptions as they happen in production, and fix them.
|
||||
|
||||
## Component Stack Traces
|
||||
|
||||
React 16 prints all errors to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
|
||||
|
||||
<img src="/react/img/blog/error-boundaries-stack-trace.png" alt="Component stack traces in error message" style="width: 100%;">
|
||||
|
||||
You can also see the filenames and line numbers in the component stack trace. This works by default in [Create React App](https://github.com/facebookincubator/create-react-app) projects:
|
||||
|
||||
<img src="/react/img/blog/error-boundaries-stack-trace-line-numbers.png" alt="Component stack traces with line numbers in error message" style="width: 100%;">
|
||||
|
||||
If you don’t use Create React App, you can add [this plugin](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-source) manually to your Babel configuration. Note that it’s intended only for development and **must be disabled in production**.
|
||||
|
||||
## Why Not Use `try` / `catch`?
|
||||
|
||||
`try` / `catch` is great but it only works for imperative code:
|
||||
|
||||
BIN
img/blog/error-boundaries-stack-trace-line-numbers.png
Normal file
BIN
img/blog/error-boundaries-stack-trace-line-numbers.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
BIN
img/blog/error-boundaries-stack-trace.png
Normal file
BIN
img/blog/error-boundaries-stack-trace.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
Reference in New Issue
Block a user