vendor/doctrine/dbal/src/Exception/DriverException.php line 14

Open in your IDE?
  1. <?php
  2. namespace Doctrine\DBAL\Exception;
  3. use Doctrine\DBAL\Driver\Exception as TheDriverException;
  4. use Doctrine\DBAL\Exception;
  5. use Doctrine\DBAL\Query;
  6. use function assert;
  7. /**
  8. * Base class for all errors detected in the driver.
  9. */
  10. class DriverException extends Exception implements TheDriverException
  11. {
  12. /**
  13. * The query that triggered the exception, if any.
  14. */
  15. private ?Query $query;
  16. /**
  17. * @internal
  18. *
  19. * @param TheDriverException $driverException The DBAL driver exception to chain.
  20. * @param Query|null $query The SQL query that triggered the exception, if any.
  21. */
  22. public function __construct(TheDriverException $driverException, ?Query $query)
  23. {
  24. if ($query !== null) {
  25. $message = 'An exception occurred while executing a query: ' . $driverException->getMessage();
  26. } else {
  27. $message = 'An exception occurred in the driver: ' . $driverException->getMessage();
  28. }
  29. parent::__construct($message, $driverException->getCode(), $driverException);
  30. $this->query = $query;
  31. }
  32. /**
  33. * {@inheritDoc}
  34. */
  35. public function getSQLState()
  36. {
  37. $previous = $this->getPrevious();
  38. assert($previous instanceof TheDriverException);
  39. return $previous->getSQLState();
  40. }
  41. public function getQuery(): ?Query
  42. {
  43. return $this->query;
  44. }
  45. }