You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
57 lines
1.4 KiB
<?php |
|
|
|
namespace Doctrine\DBAL\Exception; |
|
|
|
use Doctrine\DBAL\Driver\Exception as TheDriverException; |
|
use Doctrine\DBAL\Exception; |
|
use Doctrine\DBAL\Query; |
|
|
|
use function assert; |
|
|
|
/** |
|
* Base class for all errors detected in the driver. |
|
* |
|
* @psalm-immutable |
|
*/ |
|
class DriverException extends Exception implements TheDriverException |
|
{ |
|
/** |
|
* The query that triggered the exception, if any. |
|
*/ |
|
private ?Query $query; |
|
|
|
/** |
|
* @internal |
|
* |
|
* @param TheDriverException $driverException The DBAL driver exception to chain. |
|
* @param Query|null $query The SQL query that triggered the exception, if any. |
|
*/ |
|
public function __construct(TheDriverException $driverException, ?Query $query) |
|
{ |
|
if ($query !== null) { |
|
$message = 'An exception occurred while executing a query: ' . $driverException->getMessage(); |
|
} else { |
|
$message = 'An exception occurred in the driver: ' . $driverException->getMessage(); |
|
} |
|
|
|
parent::__construct($message, $driverException->getCode(), $driverException); |
|
|
|
$this->query = $query; |
|
} |
|
|
|
/** |
|
* {@inheritDoc} |
|
*/ |
|
public function getSQLState() |
|
{ |
|
$previous = $this->getPrevious(); |
|
assert($previous instanceof TheDriverException); |
|
|
|
return $previous->getSQLState(); |
|
} |
|
|
|
public function getQuery(): ?Query |
|
{ |
|
return $this->query; |
|
} |
|
}
|
|
|