diff --git a/monitor_quassel.go b/monitor_quassel.go
index 8764b23883a02130fdfd975e71d0bdc77998606a..fa5bab98cb9a0dbc70f8a167e8a9925dc4a4b81c 100644
--- a/monitor_quassel.go
+++ b/monitor_quassel.go
@@ -1,6 +1,8 @@
 package main
 
 import (
+	"errors"
+	"fmt"
 	"github.com/sirupsen/logrus"
 	"time"
 )
@@ -20,6 +22,13 @@ func (m *QuasselMonitor) Config() *ConfigComponent {
 }
 
 func (m *QuasselMonitor) Measure() (Datapoint, error) {
+	var err error
+	defer func() {
+		if r := recover(); r != nil {
+			err = errors.New(fmt.Sprintf("Caught error: %v", r))
+		}
+	}()
+
 	before := time.Now()
 	conn := Connect(ConnectOptions{
 		ConnectionOptions: ConnectionOptions{
@@ -30,11 +39,15 @@ func (m *QuasselMonitor) Measure() (Datapoint, error) {
 		Verify: !m.config.Quassel.Insecure,
 	})
 	defer conn.Close()
+
 	after := time.Now()
 	latency := int(after.Sub(before).Nanoseconds() / 1000000)
+	if err == nil {
+		err = conn.Error()
+	}
 
-	if conn.Error() != nil {
-		logrus.Infof("Monitor %s: %s", conn.Error())
+	if err != nil {
+		logrus.Infof("Monitor %s: %s", err)
 		return Datapoint{
 			Time:    after,
 			Up:      false,