diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 688b053fa121f..408d0f1b7aabf 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -80,6 +80,7 @@ use Psr\Log\LoggerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; +use Throwable; class Repair implements IOutput { @@ -140,9 +141,15 @@ public function addStep($repairStep) { $s = \OC::$server->query($repairStep); } catch (QueryException $e) { if (class_exists($repairStep)) { - $s = new $repairStep(); + try { + // Last resort: hope there are no constructor arguments + $s = new $repairStep(); + } catch (Throwable $inner) { + // Well, it was worth a try + throw new \Exception("Repair step '$repairStep' can't be instantiated: " . $e->getMessage(), 0, $e); + } } else { - throw new \Exception("Repair step '$repairStep' is unknown"); + throw new \Exception("Repair step '$repairStep' is unknown", 0, $e); } }