国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP異常的捕獲及處理

GHOST_349178 / 2170人閱讀

摘要:系統(tǒng)自帶異常處理業(yè)務(wù)處理錯(cuò)誤時(shí)拋出異常。輸出自定義異常處理根據(jù)業(yè)務(wù)需求,自定義方法獲取錯(cuò)誤信息類型數(shù)組業(yè)務(wù)處理錯(cuò)誤時(shí)拋出異常。年齡不能大于歲。利用分割的好處是,便于利用對(duì)日志進(jìn)行分割處理。

系統(tǒng)自帶異常處理

 120) {
        throw new Exception("年齡不能大于120歲。", 1001);
    }
} catch (Exception $e) {
    $err = [
        "code" => $e->getCode(),
        "msg"  => $e->getMessage(),
        "file"    => $e->getFile(),
        "line"   => $e->getLine()
    ];
    echo json_encode($err);
}

輸出:{"code":1001,"msg":"u5e74u9f84u4e0du80fdu5927u4e8e120u5c81u3002","file":"/data/mi/demo.php","line":11}

自定義異常處理

 $this->getCode(),
            "msg"  => $this->getMessage(),
            "file"    => $this->getFile(),
            "line"   => $this->getLine()
        ];
        if ($type == 1) {
            return json_encode($err);
        }
        return $err;
    }
}

try
{
    //業(yè)務(wù)處理 錯(cuò)誤時(shí)拋出異常。
    $age = 130;
    if ($age > 120) {
        throw new proException("年齡不能大于120歲。", 1001);
    }
} catch (proException $e) {
    $info = $e->getErrorInfo();
    var_dump($info);
}

輸出:array(4) { ["code"]=> int(1001) ["msg"]=> string(27) "年齡不能大于120歲。" ["file"]=> string(17) "/data/mi/demo.php" ["line"]=> int(53) }

捕捉多個(gè)異常

 $this->getCode(),
            "msg"  => $this->getMessage(),
            "file"    => $this->getFile(),
            "line"   => $this->getLine()
        ];
        if ($type == 1) {
            return json_encode($err);
        }
        return $err;
    }
}

try
{
    if ($_GET["age"] > 100) {
        throw new proException("自定義的異常處理", 1002);
    } else {
        throw new Exception("系統(tǒng)的異常處理", 1002);
    }
} catch (proException $e) {
    $info =  $e->getErrorInfo();
    var_dump($info);
} catch (Exception $e) {
    echo $e->getMessage();
}

?age=110 輸出:array(4) { ["code"]=> int(1002) ["msg"]=> string(24) "自定義的異常處理" ["file"]=> string(17) "/data/mi/demo.php" ["line"]=> int(64) }
?age=20 輸出:系統(tǒng)的異常處理。

日志記錄

//禁止錯(cuò)誤輸出
error_reporting(0);
//設(shè)置錯(cuò)誤處理器
set_error_handler("errorHandler");
//在腳本結(jié)束時(shí)運(yùn)行的函數(shù)
register_shutdown_function("fatalErrorHandler");

/**
 * 錯(cuò)誤處理
 * @param int    $err_no      錯(cuò)誤代碼
 * @param string $err_msg  錯(cuò)誤信息
 * @param string $err_file    錯(cuò)誤文件
 * @param int    $err_line     錯(cuò)誤行號(hào)
 * @return string
 */
function errorHandler($err_no = 0, $err_msg = "", $err_file = "", $err_line = 0)
{
    $log = [
        "[".date("Y-m-d h-i-s")."]",
        "|",
        $err_no,
        "|",
        $err_msg,
        "|",
        $err_file,
        "|",
        $err_line
    ];
    $log_path = "/data/mi/test.txt";
    error_log(implode(" ",$log)."
",3, $log_path);
    //echo implode(" ",$log)."
"; } /** * 捕捉致命錯(cuò)誤 * @return string */ function fatalErrorHandler() { $e = error_get_last(); switch ($e["type"]) { case 1: errorHandler($e["type"], $e["message"], $e["file"], $e["line"]); break; } } class DemoClass_1 { public function index() { //這里發(fā)生一個(gè)警告錯(cuò)誤,出發(fā)errorHandler echo $undefinedVarible; } } $demo_1 = new DemoClass_1(); //這里發(fā)生一個(gè)警告錯(cuò)誤,被errorHandler 捕獲 $demo_1->index(); //發(fā)生致命錯(cuò)誤,腳本停止運(yùn)行觸發(fā) fatalErrorHandler $demo_2 = new DemoClass_2(); $demo_2->index(); 打開(kāi)echo后 輸出: [2016-08-07 09-01-34] | 8 | Undefined variable: undefinedVarible | /data/mi/demo.php | 126 [2016-08-07 09-01-34] | 1 | Class "DemoClass_2" not found | /data/mi/demo.php | 134

備注:

register_shutdown_function 也可以用于API調(diào)試中,記錄每次請(qǐng)求值和返回值,方便調(diào)試。

利用 “|” 分割的好處是,便于利用 awk 對(duì)日志進(jìn)行分割處理。

Thanks ~

AD:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/21849.html

相關(guān)文章

  • PHP 錯(cuò)誤與異常

    摘要:但異常捕獲后程序可以繼續(xù)執(zhí)行,而真正的錯(cuò)誤出現(xiàn)后程序就必須終止異??梢允褂脕?lái)捕獲捕獲,捕獲之后后續(xù)代碼可以繼續(xù)執(zhí)行而錯(cuò)誤是無(wú)法使用捕獲的如果拋出了異常,就必須捕獲它否則程序終止執(zhí)行。 PHP錯(cuò)誤級(jí)別 Parse error > Fatal Error > Waning > Notice > Deprecated Deprecated 最低級(jí)別的錯(cuò)誤(不推薦,不建議)使用一些過(guò)期函數(shù)的...

    longmon 評(píng)論0 收藏0
  • Generator 異常處理

    摘要:的方法在中,提供了方法來(lái)拋出異常??偨Y(jié)關(guān)于生成器的異常處理,這里來(lái)進(jìn)行一下總結(jié)。最近在研究使用實(shí)現(xiàn)半?yún)f(xié)程,而這個(gè)過(guò)程中,對(duì)異常的處理,是非常重要的。但是的運(yùn)行方式?jīng)Q定了異常處理比較難以理解。 本文是我在研究 PHP 異步編程時(shí)的總結(jié)。對(duì)于相當(dāng)多的 PHPer 來(lái)說(shuō),可能都不知道 Generator,或者對(duì) Generaotr 的流程不是很熟悉。因?yàn)?Generator 使得程序不再是順...

    Bmob 評(píng)論0 收藏0
  • PHP框架中日志系統(tǒng)

    摘要:一的幾個(gè)函數(shù)異常捕獲自定義處理函數(shù)注冊(cè)錯(cuò)誤捕獲自定義處理函數(shù)注冊(cè)程序執(zhí)行時(shí)異常終止錯(cuò)誤捕獲處理函數(shù)注冊(cè)這三個(gè)函數(shù)在錯(cuò)誤處理控制中給開(kāi)發(fā)者提供了很大的自主空間,在日志系統(tǒng)中記錄日志信息有他們的功勞。下面要說(shuō)的類庫(kù)是借鑒了日志系統(tǒng)的設(shè)計(jì)。 引言 接觸過(guò)php框架的朋友們可能都知道,日志在項(xiàng)目中的重要作用了,他可以幫助我們定位錯(cuò)誤的位置,讓程序更友好(處理得當(dāng)?shù)脑挷粫?huì)直接拋出一大堆只有程...

    ningwang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<