diff --git a/core/modules/user/src/Plugin/views/filter/Roles.php b/core/modules/user/src/Plugin/views/filter/Roles.php
index 83dfbb33704c7f2cdf3aee5f5874a1a46c34d9a7..68cbe3ebaf7c44fa73de8e7d4ff4ef90b3a9650c 100644
--- a/core/modules/user/src/Plugin/views/filter/Roles.php
+++ b/core/modules/user/src/Plugin/views/filter/Roles.php
@@ -88,8 +88,12 @@ public function calculateDependencies() {
     }
 
     foreach ((array) $this->value as $role_id) {
-      $role = $this->roleStorage->load($role_id);
-      $dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName();
+      if ($role = $this->roleStorage->load($role_id)) {
+        $dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName();
+      }
+      else {
+        trigger_error("The {$role_id} role does not exist. You should review and fix the configuration of the {$this->view->id()} view.", E_USER_WARNING);
+      }
     }
     return $dependencies;
   }
diff --git a/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php b/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php
index ec5a06bf1cb03eb3b84cdbe0f3cf7943844d4eca..878300b79d5120764d7295313b8cd94961cdb397 100644
--- a/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php
+++ b/core/modules/user/tests/src/Kernel/Views/HandlerFilterRolesTest.php
@@ -5,6 +5,7 @@
 use Drupal\user\Entity\Role;
 use Drupal\views\Entity\View;
 use Drupal\views\Views;
+use PHPUnit\Framework\Error\Warning;
 
 /**
  * Tests the roles filter handler.
@@ -95,4 +96,28 @@ public function testDependencies() {
     $this->assertEqual($expected, $view->getDependencies());
   }
 
+  /**
+   * Tests that a warning is triggered if the filter references a missing role.
+   */
+  public function testMissingRole() {
+    $role = Role::create(['id' => 'test_user_role']);
+    $role->save();
+    /** @var \Drupal\views\Entity\View $view */
+    $view = View::load('test_user_name');
+    $display = &$view->getDisplay('default');
+    $display['display_options']['filters']['roles_target_id'] = [
+      'id' => 'roles_target_id',
+      'table' => 'user__roles',
+      'field' => 'roles_target_id',
+      'value' => ['test_user_role' => 'test_user_role'],
+      'plugin_id' => 'user_roles',
+    ];
+    // Ensure no warning is triggered before the role is deleted.
+    $view->calculateDependencies();
+    $role->delete();
+    $this->expectException(Warning::class);
+    $this->expectExceptionMessage('The test_user_role role does not exist. You should review and fix the configuration of the test_user_name view.');
+    $view->calculateDependencies();
+  }
+
 }