diff --git a/dumux/linear/istlsolvers.hh b/dumux/linear/istlsolvers.hh
index 97f5a8316a25c7c060749b8e3048f4790d05e454..6d29313ed955623e3c2a5a847b2e81dfcc063f34 100644
--- a/dumux/linear/istlsolvers.hh
+++ b/dumux/linear/istlsolvers.hh
@@ -143,9 +143,10 @@ public:
     {
         initializeParameters_(paramGroup);
 #if HAVE_MPI
+        solverCategory_ = Detail::solverCategory<LinearSolverTraits>(gridView);
         if constexpr (LinearSolverTraits::canCommunicate)
         {
-            solverCategory_ = Detail::solverCategory<LinearSolverTraits>(gridView);
+
             if (solverCategory_ != Dune::SolverCategory::sequential)
             {
                 parallelHelper_ = std::make_unique<ParallelISTLHelper<LinearSolverTraits>>(gridView, dofMapper);
@@ -157,10 +158,7 @@ public:
                 scalarProduct_ = std::make_shared<ScalarProduct>();
         }
         else
-        {
-            solverCategory_ = Dune::SolverCategory::sequential;
             scalarProduct_ = std::make_shared<ScalarProduct>();
-        }
 #else
         solverCategory_ = Dune::SolverCategory::sequential;
         scalarProduct_ = std::make_shared<ScalarProduct>();
diff --git a/dumux/linear/solvercategory.hh b/dumux/linear/solvercategory.hh
index 16ab7226aeb901df1278d4705c01d14f5e7bead8..3943680d0020277ee06243e6d2a843ccb372deec 100644
--- a/dumux/linear/solvercategory.hh
+++ b/dumux/linear/solvercategory.hh
@@ -37,7 +37,15 @@ Dune::SolverCategory::Category solverCategory(const GridView& gridView)
             return Dune::SolverCategory::overlapping;
     }
     else
-        return Dune::SolverCategory::sequential;
+    {
+        if (gridView.comm().size() > 1)
+            DUNE_THROW(Dune::InvalidStateException,
+                "Attempt to construct parallel solver but LinearSolverTraits::canCommunicate is false. " <<
+                "Maybe the grid implementation does not support distributed parallelism."
+            );
+    }
+
+    return Dune::SolverCategory::sequential;
 }
 
 } // end namespace Dumux::Detail