| | <?php |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | namespace think\exception; |
| |
|
| | class ThrowableError extends \ErrorException |
| | { |
| | public function __construct(\Throwable $e) |
| | { |
| |
|
| | if ($e instanceof \ParseError) { |
| | $message = 'Parse error: ' . $e->getMessage(); |
| | $severity = E_PARSE; |
| | } elseif ($e instanceof \TypeError) { |
| | $message = 'Type error: ' . $e->getMessage(); |
| | $severity = E_RECOVERABLE_ERROR; |
| | } else { |
| | $message = 'Fatal error: ' . $e->getMessage(); |
| | $severity = E_ERROR; |
| | } |
| |
|
| | parent::__construct( |
| | $message, |
| | $e->getCode(), |
| | $severity, |
| | $e->getFile(), |
| | $e->getLine() |
| | ); |
| |
|
| | $this->setTrace($e->getTrace()); |
| | } |
| |
|
| | protected function setTrace($trace) |
| | { |
| | $traceReflector = new \ReflectionProperty('Exception', 'trace'); |
| | $traceReflector->setAccessible(true); |
| | $traceReflector->setValue($this, $trace); |
| | } |
| | } |
| |
|