diff --git a/src/error.cpp b/src/error.cpp
index d516050385c212ae0c8eb7da4466778baf96a447..3feaf1d1acde855d71ca3d3fd79ed5afd83934d2 100644
--- a/src/error.cpp
+++ b/src/error.cpp
@@ -16,6 +16,7 @@
 #include <cstring>
 #include "error.h"
 #include "universe.h"
+#include "update.h"
 #include "output.h"
 #include "input.h"
 
@@ -69,6 +70,10 @@ void Error::universe_all(const char *file, int line, const char *str)
   if (universe->ulogfile) fclose(universe->ulogfile);
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR: %s (%s:%d)\n", str, file, line);
   throw LAMMPSException(msg);
@@ -90,6 +95,10 @@ void Error::universe_one(const char *file, int line, const char *str)
             universe->me,str,truncpath(file),line);
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR: %s (%s:%d)\n", str, file, line);
   throw LAMMPSAbortException(msg, universe->uworld);
@@ -137,6 +146,10 @@ void Error::all(const char *file, int line, const char *str)
   }
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR: %s (%s:%d)\n", str, file, line);
 
@@ -183,6 +196,10 @@ void Error::one(const char *file, int line, const char *str)
               universe->me,str,truncpath(file),line);
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR on proc %d: %s (%s:%d)\n", me, str, file, line);
   throw LAMMPSAbortException(msg, world);