diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 964d7fe91a276b949903a40a16483a37ec64d451..bb82d4b19f3fb7cea4a9ddd40e09483585c20c76 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -963,7 +963,12 @@ function system_get_info($type, $name = NULL) {
     /** @var \Drupal\Core\Extension\ModuleExtensionList $module_list */
     $module_list = \Drupal::service('extension.list.module');
     if (isset($name)) {
-      return $module_list->getExtensionInfo($name);
+      try {
+        return $module_list->getExtensionInfo($name);
+      }
+      catch (\InvalidArgumentException $e) {
+        return [];
+      }
     }
     else {
       return $module_list->getAllInstalledInfo();
diff --git a/core/modules/system/tests/src/Kernel/System/SystemGetInfoTest.php b/core/modules/system/tests/src/Kernel/System/SystemGetInfoTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..cd42fa48707d52214c51312005ac2518e7ffc10a
--- /dev/null
+++ b/core/modules/system/tests/src/Kernel/System/SystemGetInfoTest.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\Tests\system\Kernel\System;
+
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests system_get_info().
+ *
+ * @group system
+ */
+class SystemGetInfoTest extends KernelTestBase {
+
+  public static $modules = ['system'];
+
+  /**
+   * Tests system_get_info().
+   */
+  public function testSystemGetInfo() {
+    $system_module_info = system_get_info('module', 'system');
+    $this->assertSame('System', $system_module_info['name']);
+    $this->assertSame(['system' => $system_module_info], system_get_info('module'));
+
+    // The User module is not installed so system_get_info() should return
+    // an empty array.
+    $this->assertSame([], system_get_info('module', 'user'));
+
+    // Install the User module and check system_get_info() returns the correct
+    // information.
+    $this->container->get('module_installer')->install(['user']);
+    $user_module_info = system_get_info('module', 'user');
+    $this->assertSame('User', $user_module_info['name']);
+    $this->assertSame(['system' => $system_module_info, 'user' => $user_module_info], system_get_info('module'));
+
+    // Test theme info. There are no themes installed yet.
+    $this->assertSame([], system_get_info('theme', 'stable'));
+    $this->assertSame([], system_get_info('theme'));
+    $this->container->get('theme_installer')->install(['stable']);
+    $stable_theme_info = system_get_info('theme', 'stable');
+    $this->assertSame('Stable', $stable_theme_info['name']);
+    $this->assertSame(['stable' => $stable_theme_info], system_get_info('theme'));
+  }
+
+}