throw_exception方法简化为E方法

删除redirect方法和N方法
This commit is contained in:
thinkphp
2013-03-31 10:15:32 +08:00
parent 0a0a8d0dce
commit 7890bca611
27 changed files with 85 additions and 217 deletions

View File

@@ -11,70 +11,4 @@
// $Id$
namespace Think;
class Exception extends \Exception {
/**
* 异常类型
* @var string
* @access private
*/
private $type;
// 是否存在多余调试信息
private $extra;
/**
* 架构函数
* @access public
* @param string $message 异常信息
*/
public function __construct($message,$code=0,$extra=false) {
parent::__construct($message,$code);
$this->type = get_class($this);
$this->extra = $extra;
}
/**
* 异常输出 所有异常处理类均通过__toString方法输出错误
* 每次异常都会写入系统日志
* 该方法可以被子类重载
* @access public
* @return array
*/
public function __toString() {
$trace = $this->getTrace();
if($this->extra)
// 通过throw_exception抛出的异常要去掉多余的调试信息
array_shift($trace);
$this->class = isset($trace[0]['class'])?$trace[0]['class']:'';
$this->function = isset($trace[0]['function'])?$trace[0]['function']:'';
$this->file = $trace[0]['file'];
$this->line = $trace[0]['line'];
$file = file($this->file);
$traceInfo = '';
$time = date('y-m-d H:i:m');
foreach($trace as $t) {
$traceInfo .= '['.$time.'] '.$t['file'].' ('.$t['line'].') ';
$traceInfo .= $t['class'].$t['type'].$t['function'].'(';
$traceInfo .= implode(', ', $t['args']);
$traceInfo .=")\n";
}
$error['message'] = $this->message;
$error['type'] = $this->type;
$error['detail'] = ($this->line-2).': '.$file[$this->line-3];
$error['detail'] .= ($this->line-1).': '.$file[$this->line-2];
$error['detail'] .= '<font color="#FF6600" >'.($this->line).': <strong>'.$file[$this->line-1].'</strong></font>';
$error['detail'] .= ($this->line+1).': '.$file[$this->line];
$error['detail'] .= ($this->line+2).': '.$file[$this->line+1];
$error['class'] = $this->class;
$error['function'] = $this->function;
$error['file'] = $this->file;
$error['line'] = $this->line;
$error['trace'] = $traceInfo;
// 记录 Exception 日志
if(C('LOG_EXCEPTION_RECORD')) {
ThinkLog::Write('('.$this->type.') '.$this->message);
}
return $error ;
}
}