ホームページ  >  記事  >  バックエンド開発  >  Throw キーワードを使用した PHP5 例外処理メカニズム_PHP チュートリアル

Throw キーワードを使用した PHP5 例外処理メカニズム_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:58:23857ブラウズ

Exception オブジェクトを作成した後、そのオブジェクトを返すことができますが、この方法では代わりに throw キーワードを使用することをお勧めします。 throw は例外をスローするために使用されます:

throw new Exception("私のメッセージ", 44 );

Throw はスクリプトの実行を中止し、関連する Exception オブジェクトをクライアント コードで使用できるようにします。

以下は、改良された getCommandObject() メソッドです:

Index_php5.php

// PHP5
require_once('cmd_php5/Command.php');
クラス CommandManager {
プライベート $cmdDir = "cmd_php5";

関数 getCommandObject($cmd) {
$path = "{$this->cmdDir}/{$cmd}.php";
if (!file_exists($path)) {
throw new Exception("Cannot find $path");
}
require_once $path;
if (!class_exists($cmd)) {
新しい例外をスローします("クラス $cmd が存在しません");
}

$class = 新しい ReflectionClass($cmd);
if (!$class->isSubclassOf(new ReflectionClass('Command'))) {
throw new Exception("$cmd is not a Command");
}
新しい $cmd();
を返します }
}
?>

コードでは、PHP5 の Reflection API を使用して、指定されたクラスが Command タイプに属しているかどうかを判断します。このスクリプトを間違ったパスで実行すると、次のようなエラーが報告されます:

致命的なエラー: /home/xyz/BasicException.php:10 でメッセージ「command/xrealcommand.php が見つかりません」を含む例外「例外」がキャッチされません
スタックトレース:
#0 /home/xyz/BasicException.php(26):
CommandManager->getCommandObject('xrealcommand')
#1 {メイン}
/home/xyz/BasicException.php の 10 行目にスローされます

デフォルトでは、例外をスローすると致命的なエラーが発生します。これは、例外を使用するクラスには安全メカニズムが組み込まれていることを意味します。また、エラー フラグを使用するだけではそのような機能を持たせることはできません。エラー フラグの処理に失敗すると、スクリプトが間違った値で実行を続行するだけになります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631402.html技術記事 Exception オブジェクトを作成した後、そのオブジェクトを返すことができますが、この方法ではなく、 throw キーワードを使用することをお勧めします。 throw は例外をスローするために使用されます: throw new Exception(my...
)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。