Capturing Errors

In Go, there are both errors and panics, and Raven can handle both. To learn more about the differences, please read Error handling and Go.

To handle normal error responses, we have two options: CaptureErrorAndWait and CaptureError. The former is a blocking call, for a case where you’d like to exit the application after reporting, and the latter is non-blocking.

f, err := os.Open("filename.ext")
if err != nil {
	raven.CaptureErrorAndWait(err, nil)

Capturing Panics

Capturing a panic is pretty simple as well. We just need to wrap our code in CapturePanic. CapturePanic will execute the func and if a panic happened, we will record it, and gracefully continue.

raven.CapturePanic(func() {
	// do all of the scary things here
	panic("My first Sentry error!")
}, nil)

You can verify your Sentry integration by using the above snippet to send a test event.

Other than regular Errors and Panics, there are also two additional methods that allow sending information to Sentry.

Capturing Messages

CaptureMessage and it’s sibling CaptureMessageAndWait let you send arbitrary messages that the SDK will log in your Sentry project.

raven.CaptureMessageAndWait("Something bad happened and I would like to know about that", map[string]string{"category": "logging"})

Capturing Events

Capture is a low-level method that can be used to deliver hand-crafter events (named type Packet in The Sentry Go SDK). It has no CaptureAndWait counterpart, but returns a channel in case you want to verify delivery status. To form a Packet, you can use Packet type directly, or NewPacket and NewPacketWithExtra helper methods which creates an empty event with a message and optional extra data.

packet := &raven.Packet{
	Message: "Hand-crafted event",
	Extra: &raven.Extra{
		"runtime.Version": runtime.Version(),
		"runtime.NumCPU": runtime.NumCPU(),

Additional Data

All Capture* calls can take additional arguments which can help you make more sense out of your reports. To read more about it, see Context section.

Event Sampling

To set up client-side sampling you can use SetSampleRate Client function. The Sentry SDK disables error sampling by default (sampleRate=1).