diff --git a/src/starsphere/EinsteinRadioAdapter.cpp b/src/starsphere/EinsteinRadioAdapter.cpp
index 1df0a158f52b72a797a5e21ddf97ba3ac240fc23..d82796e2dbf2241aacfea7a7900f5376e06f76db 100644
--- a/src/starsphere/EinsteinRadioAdapter.cpp
+++ b/src/starsphere/EinsteinRadioAdapter.cpp
@@ -83,29 +83,31 @@ void EinsteinRadioAdapter::parseApplicationInformation()
 			m_WUSkyPosRightAscension *= 180/PI;
 			m_WUSkyPosDeclination *= 180/PI;
 
-			// prepare power spectrum data
+			// deserialize power spectrum data
 			string spectrumString(spectrumArray);
 			if(spectrumString.length() == POWERSPECTRUM_BIN_BYTES) {
 				int spectrumBinValue;
+				// prepare hex to int conversion stream
 				istringstream spectrumBinStream;
+				spectrumBinStream.exceptions(ios_base::badbit | ios_base::failbit);
 				// iterate over all bins
 				for(int i = 0, j = 0; i < POWERSPECTRUM_BIN_BYTES; i += 2, ++j) {
-					spectrumBinStream.str(spectrumString.substr(i, 2));
-					if(spectrumBinStream) {
+					try {
+						spectrumBinStream.str(spectrumString.substr(i, 2));
 						// convert hex bin value to integer
 						spectrumBinStream >> hex >> spectrumBinValue;
 						// store bin power value
 						m_WUTemplatePowerSpectrum.at(j) = (char) spectrumBinValue;
 						spectrumBinStream.clear();
 					}
-					else {
-						cerr << "Premature end of spectrum stream encountered!" << endl;
+					catch(ios_base::failure) {
+						cerr << "Error processing power spectrum shared memory data!" << endl;
 						break;
 					}
 				}
 			}
 			else {
-				cerr << "Invalid power spectrum data encountered!" << endl;
+				cerr << "Invalid power spectrum shared memory data encountered!" << endl;
 			}
 		}
 	}