[PHP錯(cuò)誤異常]⑥--自定義錯(cuò)誤處理器

MyErrorHandler.php

<?php

class MyErrorHandler
{
    public $message = '';
    public $filename = '';
    public $line = 0;
    public $var = array();
    protected $_noticeLog = 'D:\error\noticeLog.log';

    public function __construct($message, $filename, $line, $vars)
    {
        $this->message = $message;
        $this->filename = $filename;
        $this->line = $line;
        $this->vars = $vars;
    }

    public static function deal($errno, $errmsg, $filename, $line, $vars)
    {
        $self = new self($errmsg, $filename, $line, $vars);
        switch ($errno) {
            case E_USER_ERROR:
                return $self->dealError();
                break;
            case E_USER_WARNING:
            case E_WARNING:
                return $self->dealWaining();
                break;
            case E_NOTICE:
            case E_USER_NOTICE:
                return $self->dealNotice();
                break;
            default:
                return false;
        }
    }

    /**
     * 如何處理致命錯(cuò)誤
     */
    public function dealError()
    {
        ob_start();//打開輸出緩沖區(qū)柠横,所有的輸出信息不在直接發(fā)送到瀏覽器
        debug_print_backtrace();//打印 PHP回溯
        $backtrace = ob_get_flush();
        $errorMsg = <<<EOF
        出現(xiàn)了致命錯(cuò)誤癌蚁,如下:
        產(chǎn)生錯(cuò)誤的文件:{$this->filename}
        產(chǎn)生錯(cuò)誤的信息:{$this->message}
        產(chǎn)生錯(cuò)誤的行號(hào):{$this->line}
        追蹤信息:{$backtrace}
EOF;
        error_log($errorMsg, 1, '403133112@qq.com');
        exit(1);
    }

    /**
     * 如何處理警告
     */
    public function dealWarning()
    {
        $errorMsg = <<<EOF
        出現(xiàn)了警告錯(cuò)誤,如下
        產(chǎn)生警告的文件:{$this->filename}
        產(chǎn)生警告的信息:{$this->message}
        產(chǎn)生警告的行號(hào):{$this->line}
EOF;
        return error_log($errorMsg, 1, '403133112@qq.com');
    }

    /**
     * 如何處理通知級(jí)別的錯(cuò)誤
     */
    public function dealNotice()
    {
        $dateTime = date("Y-m-d H:i:s", time());
        $errorMsg = <<<EOF
        出現(xiàn)了通知錯(cuò)誤诵原,如下:
        產(chǎn)生通知的文件:{$this->filename}
        產(chǎn)生通知的信息:{$this->message}
        產(chǎn)生通知的行號(hào):{$this->line}
        產(chǎn)生通知的時(shí)間:{$dateTime}
EOF;
        return error_log($errorMsg, 3, $this->_noticeLog);
    }
}
?>

test.php

<?php
header('content-type:text/html:charset=utf-8');
require_once 'MyErr orHandler.php';
error_reporting(-1);
ini_set('display_errors', 0);
set_error_handler(array('MyErrorHandler', 'deal'));

echo $test;
//settype($var, 'king');
//test();
trigger_error('我是手動(dòng)拋出的致命錯(cuò)誤', E_USER_ERROR);//郵件接收

echo "this is a test";//無執(zhí)行
?>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喷兼,更是在濱河造成了極大的恐慌菇绵,老刑警劉巖肄渗,帶你破解...
    沈念sama閱讀 212,185評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咬最,居然都是意外死亡翎嫡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門永乌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钝的,“玉大人,你說我怎么就攤上這事铆遭∠踝” “怎么了?”我有些...
    開封第一講書人閱讀 157,684評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵枚荣,是天一觀的道長碗脊。 經(jīng)常有香客問我,道長橄妆,這世上最難降的妖魔是什么衙伶? 我笑而不...
    開封第一講書人閱讀 56,564評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮害碾,結(jié)果婚禮上矢劲,老公的妹妹穿的比我還像新娘。我一直安慰自己慌随,他們只是感情好芬沉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,681評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阁猜,像睡著了一般丸逸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剃袍,一...
    開封第一講書人閱讀 49,874評(píng)論 1 290
  • 那天黄刚,我揣著相機(jī)與錄音,去河邊找鬼民效。 笑死憔维,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畏邢。 我是一名探鬼主播业扒,決...
    沈念sama閱讀 39,025評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼棵红!你這毒婦竟也來了凶赁?” 一聲冷哼從身側(cè)響起咧栗,我...
    開封第一講書人閱讀 37,761評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤逆甜,失蹤者是張志新(化名)和其女友劉穎虱肄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體交煞,經(jīng)...
    沈念sama閱讀 44,217評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咏窿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,545評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了素征。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片集嵌。...
    茶點(diǎn)故事閱讀 38,694評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖御毅,靈堂內(nèi)的尸體忽然破棺而出根欧,到底是詐尸還是另有隱情,我是刑警寧澤端蛆,帶...
    沈念sama閱讀 34,351評(píng)論 4 332
  • 正文 年R本政府宣布凤粗,位于F島的核電站,受9級(jí)特大地震影響今豆,放射性物質(zhì)發(fā)生泄漏嫌拣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,988評(píng)論 3 315
  • 文/蒙蒙 一呆躲、第九天 我趴在偏房一處隱蔽的房頂上張望异逐。 院中可真熱鬧,春花似錦插掂、人聲如沸灰瞻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箩祥。三九已至,卻和暖如春肆氓,著一層夾襖步出監(jiān)牢的瞬間袍祖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評(píng)論 1 266
  • 我被黑心中介騙來泰國打工谢揪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕉陋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,427評(píng)論 2 360
  • 正文 我出身青樓拨扶,卻偏偏與公主長得像凳鬓,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子患民,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,580評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容