PHP 5 0異常處理機制深度探索

2021-08-26 16:00:52 字數 1865 閱讀 1464

php 5.0異常處理機制深度探索

2023年11月19日

簡介:這是php 5.0異常處理機制深度探索的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php原始碼等。 class='pingjiaf' frameborder='0' src=' 4026' scrolling='no'> 本文面向希望了解php5異常處理機制的程式設計師。閱讀本文你需要具有一定物件導向程式設計和php基礎。

php5內建的異常類需要有以下成員方法:

__construct() 建構函式,需要乙個出錯資訊和乙個可選的整型錯誤標記作引數

getmessage() 取得出錯資訊

getcode()

出錯的**

getfile() 異常發生的檔案

getline() 異常發生的行數

gettrace() 跟蹤異常每一步傳遞的路線,存入陣列,返回該陣列

gettraceasstring() 和gettrace()功能一樣,但可以將陣列中的元素轉成字串並按一定格式輸出

可以看出來,exception 類的結構和pear_error 很相似。當你的指令碼中遇到乙個錯誤,你可以建立你的異常物件:

$ex = new exception( "could not open $this->file" ); exception類的建構函式將接受乙個出錯資訊和乙個錯誤**。

[b]使用 throw關鍵字

[/b] 建立乙個exception物件後你可以將物件返回,但不應該這樣使用,更好的方法是用throw關鍵字來代替。throw用來丟擲異常:

throw new exception( "my message", 44 ); throw 將指令碼的執行中止,並使相關的exception物件對客戶**可用。

以下是改進過的getcommandobject() 方法:

index_php5.php

<?php // php 5

require_once('cmd_php5/command.php');

class commandmanager /.php";

if (!file_exists($path))

require_once $path;

if (!class_exists($cmd))

$class = new reflectionclass($cmd);

if (!$class->issubclassof(new reflectionclass('command')))

return new $cmd();

} }

?> **中我們使用了php5的反射(reflection)api來判斷所給的類是否是屬於command 型別。在錯誤的路徑下執行本指令碼將會報出這樣的錯誤:

fatal error: uncaught exception 'exception' with message 'cannot find command/xrealcommand.php' in /home/xyz/basicexception.php:10

stack trace:

#0 /home/xyz/basicexception.php(26):

commandmanager->getcommandobject('xrealcommand')

#1

thrown in /home/xyz/basicexception.php on line 10 預設地,丟擲異常導致乙個fatal error。這意味著使用異常的類內建有安全機制。而僅僅使用乙個錯誤標記,不能擁有這樣的功能。處理錯誤標記失敗只會你的指令碼使用錯誤的值來繼續執行。

[b]try-catch 語句

[/b] 為了進一步處理異常,我們需要使用try-catch語句

php異常處理機制

異常的規則 需要進行異常處理的 應該放入 try 塊內,以便捕獲潛在的異常。每個 try 或 throw 塊必須至少擁有乙個對應的 catch 塊。使用多個 catch 塊可以捕獲不同種類的異常。可以在 try 塊內的 catch 塊中丟擲 再次丟擲 異常。簡而言之 如果丟擲了異常,就必須捕獲它。1...

PHP 5 0物件模型深度探索之繫結

除了限制訪問,訪問方式也決定哪個方法將被子類呼叫或哪個屬性將被子類訪問.函式呼叫與函式本身的關聯,以及成員訪問與變數記憶體位址間的關係,稱為繫結。在計算機語言中有兩種主要的繫結方式 靜態繫結和動態繫結。靜態繫結發生於資料結構和資料結構間,程式執行之前.靜態繫結發生於編譯期,因此不能利用任何執行期的資...

異常處理機制

異常處理的三個步驟 檢查異常,丟擲異常,處理異常 異常處理基本原理 把需要檢測的程式放到try塊中,把異常處理的程式放在catch塊中。如果執行乙個函式出現了異常,可以丟擲異常資訊。然後查詢try塊下面的catch塊是否可以處理該異常。如果該函式不處理該異常,將傳遞給它的上一級函式 呼叫函式 如果它...