#### 自定義異常類
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或者一些特效。
* * * * *
下一章節會講一些我經常用到的函數,我把他們封裝到了一起,寫進了框架的公共函數庫文件中。