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

資訊專欄INFORMATION COLUMN

PHP異常的捕獲及處理

GHOST_349178 / 2178人閱讀

摘要:系統自帶異常處理業務處理錯誤時拋出異常。輸出自定義異常處理根據業務需求,自定義方法獲取錯誤信息類型數組業務處理錯誤時拋出異常。年齡不能大于歲。利用分割的好處是,便于利用對日志進行分割處理。

系統自帶異常處理

 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
{
    //業務處理 錯誤時拋出異常。
    $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) }

捕捉多個異常

 $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("系統的異常處理", 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 輸出:系統的異常處理。

日志記錄

//禁止錯誤輸出
error_reporting(0);
//設置錯誤處理器
set_error_handler("errorHandler");
//在腳本結束時運行的函數
register_shutdown_function("fatalErrorHandler");

/**
 * 錯誤處理
 * @param int    $err_no      錯誤代碼
 * @param string $err_msg  錯誤信息
 * @param string $err_file    錯誤文件
 * @param int    $err_line     錯誤行號
 * @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)."
"; } /** * 捕捉致命錯誤 * @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() { //這里發生一個警告錯誤,出發errorHandler echo $undefinedVarible; } } $demo_1 = new DemoClass_1(); //這里發生一個警告錯誤,被errorHandler 捕獲 $demo_1->index(); //發生致命錯誤,腳本停止運行觸發 fatalErrorHandler $demo_2 = new DemoClass_2(); $demo_2->index(); 打開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調試中,記錄每次請求值和返回值,方便調試。

利用 “|” 分割的好處是,便于利用 awk 對日志進行分割處理。

Thanks ~

AD:

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21849.html

相關文章

  • PHP 錯誤與異常

    摘要:但異常捕獲后程序可以繼續執行,而真正的錯誤出現后程序就必須終止異常可以使用來捕獲捕獲,捕獲之后后續代碼可以繼續執行而錯誤是無法使用捕獲的如果拋出了異常,就必須捕獲它否則程序終止執行。 PHP錯誤級別 Parse error > Fatal Error > Waning > Notice > Deprecated Deprecated 最低級別的錯誤(不推薦,不建議)使用一些過期函數的...

    longmon 評論0 收藏0
  • Generator 異常處理

    摘要:的方法在中,提供了方法來拋出異常。總結關于生成器的異常處理,這里來進行一下總結。最近在研究使用實現半協程,而這個過程中,對異常的處理,是非常重要的。但是的運行方式決定了異常處理比較難以理解。 本文是我在研究 PHP 異步編程時的總結。對于相當多的 PHPer 來說,可能都不知道 Generator,或者對 Generaotr 的流程不是很熟悉。因為 Generator 使得程序不再是順...

    Bmob 評論0 收藏0
  • PHP框架中日志系統

    摘要:一的幾個函數異常捕獲自定義處理函數注冊錯誤捕獲自定義處理函數注冊程序執行時異常終止錯誤捕獲處理函數注冊這三個函數在錯誤處理控制中給開發者提供了很大的自主空間,在日志系統中記錄日志信息有他們的功勞。下面要說的類庫是借鑒了日志系統的設計。 引言 接觸過php框架的朋友們可能都知道,日志在項目中的重要作用了,他可以幫助我們定位錯誤的位置,讓程序更友好(處理得當的話不會直接拋出一大堆只有程...

    ningwang 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<