In order to quickly understand and fix errors, it is often helpful to send exceptions that have been handled by your application to BugSnag, with additional diagnostic data that is specific to the error.
This documentation is for version 7+ of the BugSnag JavaScript notifier. If you are using older versions, we recommend upgrading to the latest release using our Upgrade guide. Documentation for the previous release can be found on our legacy pages.
If you would like to send handled errors to BugSnag, you can pass an error to the Bugsnag.notify
method.
try {
// Some potentially crashy code
} catch (e) {
Bugsnag.notify(e);
}
This will create and send a report for a “handled” error, with the default severity “warning”.
We recommend passing a JavaScript Error
object to notify
as this is ensures that an accurate stacktrace can be obtained.
If you provide something that is not an Error
, such as a string or an object with name
and message
fields, notify
will attempt to generate a stacktrace. This works for most cases, but is not as reliable as when an error is provided.
If notify
is unable to derive an errorClass
and message
from the argument passed in (for example null
, a Function
, or an object without suitable properties), the error will be reported to your dashboard but the message will indicate a notifier usage error.
Similarly, notify
can be used to send promise rejections as a handled error to BugSnag:
new Promise(function(resolve, reject) {
something.potentiallyFailing()
})
.then(function () { /* if the promise is resolved */ })
.catch(Bugsnag.notify); // if the promise is rejected
You can send handled exceptions with diagnostic data or other customizations by passing an onError
callback as an argument to notify
.
The callback receives an Event
object as a parameter which can be used to add or amend the data sent to your BugSnag dashboard. You can also return false
from the callback to prevent the event being sent at all:
Bugsnag.notify(new Error('Bad, but not fatal'), function (event) {
if (event.getUser().id === '1') return false
event.severity = 'info'
event.context = 'component-space-246'
event.setUser('3', 'bugs.nag@bugsnag.com', 'Bugs Nag')
event.addMetadata('hyperflopz', { count: 23 })
})
See Customizing error reports for more information about the properties and methods available in an Event
object.
To run a callback when the report has been delivered or enqueued for delivery later, provide this as the third argument:
Bugsnag.notify(new Error('uh oh'), null, function (err, event) {
if (err) {
console.log('Failed to send report because of:\n' + err.stack)
} else {
console.log('Successfully sent report "' + event.errors[0].errorMessage + '"')
}
})