Index: prview/perspectives/pr/inversion_panel.py
===================================================================
--- prview/perspectives/pr/inversion_panel.py	(revision a00ee4c66d0c89066e3a01182fb9607f0f69933a)
+++ prview/perspectives/pr/inversion_panel.py	(revision ceaf16ebbfed884b28e8ca3e7f61155b8de2d33f)
@@ -7,4 +7,6 @@
 import wx
 import os
+import sys
+import logging
 from sans.guicomm.events import StatusEvent    
 from inversion_state import InversionState
@@ -955,10 +957,14 @@
             if path and os.path.isfile(path):
                 self.plot_data.SetValue(str(path))
-                self.manager.show_data(path, reset=True)
-                self._on_pars_changed(None)
-            
-                # Perform inversion
-                if self.standalone == True:
-                    self._on_invert(None)
+                try:
+                    self.manager.show_data(path, reset=True)
+                    self._on_pars_changed(None)
+                
+                    # Perform inversion
+                    if self.standalone == True:
+                        self._on_invert(None)
+                except:
+                    # Invalid data
+                    logging.error("InversionControl._change_file: %s" % sys.exc_value)                    
 
 class HelpDialog(wx.Dialog):
Index: prview/perspectives/pr/pr.py
===================================================================
--- prview/perspectives/pr/pr.py	(revision 0d88a09546e87b5b7c7eeaa6e86e52f9b6d0a1ae)
+++ prview/perspectives/pr/pr.py	(revision ceaf16ebbfed884b28e8ca3e7f61155b8de2d33f)
@@ -412,4 +412,9 @@
         # Use data loader to load file
         dataread = Loader().load(path)
+        
+        # Notify the user if we could not read the file
+        if dataread is None:
+            raise RuntimeError, "Invalid data"
+            
         x = None
         y = None
@@ -827,18 +832,17 @@
             @param reset: if True all other plottables will be cleared
         """
-        
-        
         if path is not None:
             try:
                 pr = self._create_file_pr(path)
-                
-                # If the file contains nothing, just return
-                if pr is None:
-                    return
-                
-                self.pr = pr
-            except:  
-                wx.PostEvent(self.parent, StatusEvent(status=sys.exc_value))
-                return
+            except:
+                status="Problem reading data: %s" % sys.exc_value
+                wx.PostEvent(self.parent, StatusEvent(status=status))
+                raise RuntimeError, status
+                
+            # If the file contains nothing, just return
+            if pr is None:
+                raise RuntimeError, "Loaded data is invalid"
+            
+            self.pr = pr
               
         # Make a plot of I(q) data
@@ -925,4 +929,10 @@
             @param path: path of the file to read in 
         """
+        # Sanity check
+        if self.current_plottable is None:
+            msg = "Please load a valid data set before proceeding."
+            wx.PostEvent(self.parent, StatusEvent(status=msg))  
+            return None   
+        
         # Get the data from the chosen data set and perform inversion
         pr = Invertor()
@@ -1031,9 +1041,15 @@
                 #TODO: refactor this into a proper status handling
                 wx.PostEvent(self.parent, StatusEvent(status=''))
-                x, y, err = self.load(path)
+                try:
+                    x, y, err = self.load(path)
+                except:
+                    message = "Could not read the data file: %s" % path
+                    wx.PostEvent(self.parent, StatusEvent(status=message))
+                    return None
                 
                 # If the file contains no data, just return
-                #TODO: clean this up: we need a way to recognize that not all P(r) files are data
                 if x is None:
+                    message = "The loaded file contains no data"
+                    wx.PostEvent(self.parent, StatusEvent(status=message))
                     return None
             
