首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 常用功能塊:異常處理體系與時間戳操作詳解(上)

     編輯:PHP 相關知識

PHP 常用功能塊:異常處理體系與時間戳操作詳解(上)

PHP 5 引入面向對象異常機制,配合時間戳函數構建健壯、可追蹤的應用。本文涵蓋異常基礎語法、系統內置異常類、自定義異常、多異常捕獲、Unix 時間戳概念與常用函數。

一、異常處理

1. 基礎 try-catch-throw

<?php
try {
    $error = 'Always throw this error';
    throw new Exception($error); // 拋出異常對象
    echo 'Never executed';       // 不會執行
} catch (Exception $e) {
    echo 'Caught exception: ' . $e->getMessage() . "\n";
}
echo 'Hello World'; // 程序繼續執行,未崩潰

2. 系統內置 Exception 類結構

class Exception {
    protected $message = 'Unknown exception'; // 異常信息
    protected $code    = 0;                   // 用戶自定義代碼
    protected $file;                          // 發生異常文件名
    protected $line;                          // 發生異常行號

    public function __construct($message = null, $code = 0);
    final public function getMessage();       // 返回異常信息
    final public function getCode();          // 返回異常代碼
    final public function getFile();          // 返回文件名
    final public function getLine();          // 返回行號
    final public function getTrace();         // 返回 backtrace 數組
    final public function getTraceAsString(); // 格式化字符串回溯
    public function __toString();             // 可輸出字符串表示
}

3. 自定義異常類

class MyException extends Exception {
    public function __construct($message, $code = 0) {
        parent::__construct($message, $code); // 建議調用父構造函數
    }
    public function __toString() {
        return __CLASS__ . ":[" . $this->code . "]:" . $this->message . "
"; } public function customFunction() { echo "按自定義方法處理該類型異常
"; } }

4. 使用自定義異常

try {
    throw new MyException('允許拋出這個錯誤');
} catch (MyException $e) {
    echo '捕獲異常: ' . $e;        // 自動調用 __toString()
    $e->customFunction();          // 調用自定義處理方法
}
echo '你好呀';

5. 捕獲多種異常

try {
    // 可能拋出 Exception、MyException、PDOException 等
} catch (MyException $e) {
    // 處理 MyException
} catch (PDOException $e) {
    // 處理 PDO 異常
} catch (Exception $e) {
    // 兜底處理其他 Exception
}
// 注意:捕獲順序從具體到一般,子類在前,父類在後

二、Unix 時間戳

Unix 時間戳:自 1970-01-01 00:00:00 UTC 至今的總秒數(不含閏秒),32 位有符號整數範圍至 2038-01-19 03:14:07(Y2K38 問題),64 位系統無此限制。

核心時間函數速查

函數說明示例輸出
time()當前時間戳1700000000
date('Y-m-d H:i:s', $ts)格式化時間戳2023-11-15 10:30:00
strtotime('+1 day')相對時間解析為時間戳1700086400
mktime(h,i,s,m,d,y)構造時間戳1700000000
microtime(true)微秒級時間戳(浮點數)1700000000.1234
getdate($ts)時間戳轉關聯數組array('year'=>2023, 'mon'=>11, ...)

異常機制讓錯誤處理結構化、可控、可追蹤;時間戳是業務邏輯(訂單號、緩存過期、簽名時效、日誌記錄)的時間基準。下篇將繼續講解 DateTime 類、時區處理、高精度計時等進階主題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved