Index: /trunk/BNC/RTCM/RTCM2.cpp
===================================================================
--- /trunk/BNC/RTCM/RTCM2.cpp	(revision 248)
+++ /trunk/BNC/RTCM/RTCM2.cpp	(revision 249)
@@ -502,12 +502,9 @@
   
   if (n>32) {
-    cerr << "Error: can't handle >32 bits in RTCM2packet::getUnsignedBits" 
-         << endl;
-    return 0; // exit(-1);
+    throw("Error: can't handle >32 bits in RTCM2packet::getUnsignedBits");
   };
   
   if ( 24*DW.size() < start+n-1 ) {
-    cerr << "Error: Packet too short in RTCM2packet::getUnsignedBits" << endl;
-    return 0; // exit(-1);
+    throw("Error: Packet too short in RTCM2packet::getUnsignedBits");
   }
 
@@ -554,12 +551,9 @@
   
   if (n>32) {
-    cerr << "Error: can't handle >32 bits in RTCM2packet::getBits" 
-         << endl;
-    return 0; // exit(-1);
+    throw("Error: can't handle >32 bits in RTCM2packet::getBits");
   };
   
   if ( 24*DW.size() < start+n-1 ) {
-    cerr << "Error: Packet too short in RTCM2packet::getBits" << endl;
-    return 0; // exit(-1);
+    throw("Error: Packet too short in RTCM2packet::getBits");
   }
 
Index: /trunk/BNC/bncgetthread.cpp
===================================================================
--- /trunk/BNC/bncgetthread.cpp	(revision 248)
+++ /trunk/BNC/bncgetthread.cpp	(revision 249)
@@ -218,26 +218,32 @@
   // ------------------
   while (true) {
-
-    if (_socket->state() != QAbstractSocket::ConnectedState) {
-      emit(newMessage(_staID + ": Socket not connected, reconnecting"));
-      tryReconnect();
-    }
-
-    _socket->waitForReadyRead(_timeOut);
-    qint64 nBytes = _socket->bytesAvailable();
-    if (nBytes > 0) {
-      char* data = new char[nBytes];
-      _socket->read(data, nBytes);
-      _decoder->Decode(data, nBytes);
-      delete data;
-      for (list<Observation*>::iterator it = _decoder->_obsList.begin(); 
-           it != _decoder->_obsList.end(); it++) {
-        emit newObs(_staID, *it);
-        _global_caster->newObs(_staID, *it);
-      }
-      _decoder->_obsList.clear();
-    }
-    else {
-      emit(newMessage(_staID + ": Data Timeout, reconnecting"));
+    try {
+      if (_socket->state() != QAbstractSocket::ConnectedState) {
+        emit(newMessage(_staID + ": Socket not connected, reconnecting"));
+        tryReconnect();
+      }
+      
+      
+      _socket->waitForReadyRead(_timeOut);
+      qint64 nBytes = _socket->bytesAvailable();
+      if (nBytes > 0) {
+        char* data = new char[nBytes];
+        _socket->read(data, nBytes);
+        _decoder->Decode(data, nBytes);
+        delete data;
+        for (list<Observation*>::iterator it = _decoder->_obsList.begin(); 
+             it != _decoder->_obsList.end(); it++) {
+          emit newObs(_staID, *it);
+          _global_caster->newObs(_staID, *it);
+        }
+        _decoder->_obsList.clear();
+      }
+      else {
+        emit(newMessage(_staID + ": Data Timeout, reconnecting"));
+        tryReconnect();
+      }
+    }
+    catch (const char* msg) {
+      emit(newMessage(_staID + msg));
       tryReconnect();
     }
