miniterm: reconnect in a loop handling errors, exit key
diff --git a/serial/tools/miniterm.py b/serial/tools/miniterm.py
index f1e9bed..634264e 100644
--- a/serial/tools/miniterm.py
+++ b/serial/tools/miniterm.py
@@ -610,10 +610,18 @@
             # reader thread needs to be shut down
             self._stop_reader()
             self.serial.close()
-            sys.stderr.write('--- Port closed: {} ---\n'.format(self.serial.port))
-            sys.stderr.write('--- press any key to reconnect ---\n')
-            self.console.getkey()
-            self.serial.open()
+            sys.stderr.write('\n--- Port closed: {} ---\n'.format(self.serial.port))
+            while not self.serial.is_open:
+                sys.stderr.write('--- press {exit} to exit or any other key to reconnect ---\n'.format(
+                    exit=key_description(self.exit_character)))
+                k = self.console.getkey()
+                if k == self.exit_character:
+                    self.stop()             # exit app
+                    break
+                try:
+                    self.serial.open()
+                except Exception as e:
+                    sys.stderr.write('--- ERROR opening port: {} ---\n'.format(e))
             # and restart the reader thread
             self._start_reader()
             sys.stderr.write('--- Port opened: {} ---\n'.format(self.serial.port))