How to modify the message of a Javascript Error object?
Asked Answered
D

2

13

Is there any harm in updating the message of an Error object like this?

const err = new Error('bar');
...
err.message = `foo ${err.message}`;

My objective is to add some useful information to the error message when logging the error.

Dufour answered 23/1, 2019 at 13:38 Comment(0)
S
2

It can be useful to add some extra information/breadcrumbs as an exception travels up through your application layers. That said, you are mutating an object, which can be hard to reason about in a large code-base; exceptions management normally being a cross-cutting concern in your application.

Also bear in mind that some libraries will extend the Error class and leave the message property without a setter, making it ready-only.

Strephon answered 10/3, 2019 at 15:41 Comment(0)
P
0

I just noticed some harm :-(

On chrome 127.0.6533.17 (but not firefox 127.0.2), after your code, the error object is in a screwy state, in which err.message contains your additional annotation, but printing err does not show it:

const err = new Error('bar');
err.message = `foo ${err.message}`;
console.log("err.message = ",err.message);  // "err.message =  foo bar"
console.log("err = ",err);  // "err =\nError: bar\n    at <anonymous>:1:13"

The above is from chrome. On firefox, it shows "foo bar" in the final message instead.

Peddler answered 9/7, 2024 at 15:3 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.