diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index bcde125518b1a2fe2d685bb6312086c32d70dbbc..5df58e5d57d8f5bf66850f4bd232f9dcf466c384 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -249,23 +249,29 @@ class PluginHost {
 
 					$this->last_registered = $class;
 
-					switch ($kind) {
-					case $this::KIND_SYSTEM:
-						if ($this->is_system($plugin)) {
-							if (!$skip_init) $plugin->init($this);
-							$this->register_plugin($class, $plugin);
-						}
-						break;
-					case $this::KIND_USER:
-						if (!$this->is_system($plugin)) {
-							if (!$skip_init) $plugin->init($this);
-							$this->register_plugin($class, $plugin);
-						}
-						break;
-					case $this::KIND_ALL:
-						if (!$skip_init) $plugin->init($this);
-						$this->register_plugin($class, $plugin);
-						break;
+					try {
+						switch ($kind) {
+							case $this::KIND_SYSTEM:
+								if ($this->is_system($plugin)) {
+									if (!$skip_init) $plugin->init($this);
+									$this->register_plugin($class, $plugin);
+								}
+								break;
+							case $this::KIND_USER:
+								if (!$this->is_system($plugin)) {
+									if (!$skip_init) $plugin->init($this);
+									$this->register_plugin($class, $plugin);
+								}
+								break;
+							case $this::KIND_ALL:
+								if (!$skip_init) $plugin->init($this);
+								$this->register_plugin($class, $plugin);
+								break;
+							}
+					} catch (Exception $ex) {
+						user_error($ex, E_USER_WARNING);
+					} catch (Error $err) {
+						user_error($err, E_USER_WARNING);
 					}
 				}
 			}