| <?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); |
| } |
| } |
|
|