PHP5的異常處理機制之使用throw關鍵字

2021-12-29 22:03:14 字數 1105 閱讀 3983

建立乙個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。這意味著使用異常的類內建有安全機制。而僅僅使用乙個錯誤標記,不能擁有這樣的功能。處理錯誤標記失敗只會你的指令碼使用錯誤的值來繼續執行。

PHP5的異常處理機制

有兩個理由讓我們想要從 exception 類中派生中子類 1 讓子類提供自定義的功能 2 區分不同型別的異常 看第二個例子。使用 commandmanager類時 我們可能會產生兩個錯誤 乙個是一般性的錯誤如找不到目錄,另乙個是找不到或無法生成 command物件。這樣我們需要針對這兩個錯誤來定義...

PHP5的異常處理機制 1 本文索引

matt zandstra 翻譯 簡介在php5之前的錯誤處理 使用die 或trigger error 返回錯誤標記 使用pear處理錯誤 php5的異常機制 使用throw關鍵字 try catch語句 處理多個錯誤 自定義異常型別 異常的傳遞 更多異常的相關資訊 總結關於作者 本文面向的讀者 ...

php異常處理機制

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