Skip to content

Commit 719185d

Browse files
committed
fix: catch errors in stack parsing
1 parent 9674e17 commit 719185d

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

src/index.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@ export default class RedBox extends Component {
1818
useLines: true,
1919
useColumns: true
2020
}
21-
render () {
22-
const {error, filename, editorScheme, useLines, useColumns} = this.props
23-
const {redbox, message, stack, frame, file, linkToFile} = assign({}, style, this.props.style)
24-
25-
const frames = ErrorStackParser.parse(error).map((f, index) => {
21+
renderFrames (frames) {
22+
const {filename, editorScheme, useLines, useColumns} = this.props
23+
const {frame, file, linkToFile} = assign({}, style, this.props.style)
24+
return frames.map((f, index) => {
2625
let text
2726
let url
2827

@@ -45,6 +44,29 @@ export default class RedBox extends Component {
4544
</div>
4645
)
4746
})
47+
}
48+
render () {
49+
const {error} = this.props
50+
const {redbox, message, stack, frame} = assign({}, style, this.props.style)
51+
52+
let frames
53+
let parseError
54+
try {
55+
frames = ErrorStackParser.parse(error)
56+
} catch (e) {
57+
parseError = new Error('Failed to parse stack trace. Stack trace information unavailable.')
58+
}
59+
60+
if (parseError) {
61+
frames = (
62+
<div style={frame} key={0}>
63+
<div>{parseError.message}</div>
64+
</div>
65+
)
66+
} else {
67+
frames = this.renderFrames(frames)
68+
}
69+
4870
return (
4971
<div style={redbox}>
5072
<div style={message}>{error.name}: {error.message}</div>

0 commit comments

Comments
 (0)