之前讲到过对于异常的处理机制,最好可以自定义异常,如果debug打开,那么显示具体的调试信息,如果debug关闭,那么将异常记录到日志,然后跳转到错误页,这节课我就主要来讲一下这个异常处理机制。
现在我们定义一个异常的基类,在toper中为tp_exception,在这儿,我就直接叫baseexception吧,那baseexception.php肯定首先是有一个架子的:
1 _tologfile(parent::gettraceasstring());
6 $this->_outputerrorpage();
7 }
8 }
1 public function __tostring() {
2 if(true !== c('debug')) {
3 $this->_tologfile(parent::gettraceasstring());
4 $this->_outputerrorpage();
5 exit();
6 }
7 return parent::__tostring();
8 }
当然,由于__tostring要返回字符串,而一旦throw一个异常,就会直接显示出来异常信息,为了在debug关闭之后不在页面显示异常信息,所以就直接在此处exit了,当然,我目前没有想到一个更好的办法,所以建议使用printstack来做。
我这个异常类就是用来抛砖引玉的,所以如果你有什么好的方法,请和我多多交流,互相学习,互相成长。
当然,现在只是定义了一个异常处理的基类,后面会写很多关于异常的子类,真正使用的时候是调用其子类的。