'How can i change the name or message of a JavaScript Error object used in Sentry?

I have a JavaScript error object that I have caught in code. It has a name, message, stack etc that I want to log at the backend. I am using sentry for that. But before logging I want to change the name or the message of the error.

What will be the best way to do it? I tried creating a new error and adding the original error as cause, but that did not work with sentry. It just logs the error passed as the cause of the new error.

new Error('Additional error message', { cause: originalError });

I need the rest of the properties of the error to remain the same, just need to change the name or message.



Solution 1:[1]

I've made errors a bit readable with this:

when you capture exception, add transactionName to scope.

you can also enhance event in beforeSend method

Sentry.captureException(error, (scope) => {
        ...
        scope.setTransactionName(`my custom title for error`);
        return scope;
    });

Sentry error example:

Solution 2:[2]

A super helpful thing you can do to accomplish this is actually create your own custom error types. This can be done by simply using a class that extends the Error constructor, like so:

class MyError extends Error {
  constructor(message) {
    super();
    this.name = "MyError";
    this.message = message;
  }
}
try {
  throw new MyError('this is my error')
} catch (err) {
  console.log(err instanceof Error);
  console.log(err.message);
  console.log(err.name);
  console.log(err.stack);
}

class ExtendedError extends Error {
  constructor(message, { cause }) {
    super();
    this.name = "ExtendedError";
    this.message = message;
    // set the cause to maintain linkage to the original error
    this.cause = cause;
  }
}
try {
  throw new Error('Something bad happened!');
} catch (err) {
  let extendedError = new ExtendedError('Additional details', { cause: err });
  console.log(extendedError instanceof Error);
  console.log(extendedError.message);
  console.log(extendedError.name);
  console.log(extendedError.cause.stack);
  console.log(extendedError.stack);
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ????? ?????????
Solution 2