diff --git a/Lib/pstats.py b/Lib/pstats.py
index 8f1d795..a5db1d3 100644
--- a/Lib/pstats.py
+++ b/Lib/pstats.py
@@ -614,14 +614,19 @@
                 except IOError as err:
                     print(err.args[1], file=self.stream)
                     return
+                except Exception as err:
+                    print(err.__class__.__name__ + ':', err, file=self.stream)
+                    return
                 self.prompt = line + "% "
             elif len(self.prompt) > 2:
-                line = self.prompt[-2:]
+                line = self.prompt[:-2]
+                self.do_read(line)
             else:
                 print("No statistics object is current -- cannot reload.", file=self.stream)
             return 0
         def help_read(self):
             print("Read in profile data from a specified file.", file=self.stream)
+            print("Without argument, reload the current file.", file=self.stream)
 
         def do_reverse(self, line):
             if self.stats:
@@ -664,6 +669,9 @@
         def help_strip(self):
             print("Strip leading path information from filenames in the report.", file=self.stream)
 
+        def help_help(self):
+            print("Show help for a given command.", file=self.stream)
+
         def postcmd(self, stop, line):
             if stop:
                 return stop
