#### 自定义异常类
PHP自带的异常类不太容易懂,而且对于强迫症来说提示的也不够明显,有时候需要详细信息的时候需要连续调用多个方法,所以把这些方法封装起来也是必要的,封装自定义异常类的方法很简单,只需要继承一下PHP原生的异常类,再把其中的方法封装一下就好。
~~~
<?php
namespace S;
class S_Exception extends \Exception
{
public function __construct($message, $code = 0)
{
// 确保所有变量都被正确赋值
parent::__construct($message, $code);
}
public function getDetail(){
if (APP_DEBUG === true){
$this->getDetails();
}else{
echo "出错了!";
}
}
public function getDetails()
{
echo '<h1>出现异常了!</h1>';
$msg = '<p>错误内容:<b>' . $this->getMessage() . '</b></p>';
$msg .= '<p>异常抛出位置:<b>' . $this->getFile() . '</b>,第<b>' . $this->getLine() . '</b>行</p>';
$msg .= '<p>异常追踪信息:<b>' . $this->getTraceAsString() . '</b></p>';
echo $msg;
echo '<hr>';
echo '<pre>';
print_r($this->getTrace()) ;
echo '</pre>';
exit;
}
}
~~~
相信各位对异常类都不陌生,这里只简单提一提,首先判断是否是调试模式,如果不是,就不抛出异常,如果是的话,就按照自定义的格式输出异常信息,里面遇到的方法``$this->getFile()``是获取出现异常的文件,``$this->getMessage()``是获取异常信息,`` $this->getTraceAsString()``是获取异常追踪信息,把它们按照自己规定的格式显示出来,如果你喜欢,甚至可以给他们加上css或者一些特效。
* * * * *
下一章节会讲一些我经常用到的函数,我把他们封装到了一起,写进了框架的公共函数库文件中。