48 lines
1.5 KiB
PHP
48 lines
1.5 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
|
// +----------------------------------------------------------------------
|
|
// | Author: yunwuxin <448901948@qq.com>
|
|
// +----------------------------------------------------------------------
|
|
|
|
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);
|
|
}
|
|
}
|