您的位置:首页 > 编程语言 > PHP开发

PHP5的异常处理机制[8]--使用throw关键字

2004-08-30 21:29 756 查看

使用throw关键字

建立一个Exception对象后你可以将对象返回,但不应该这样使用,更好的方法是用throw关键字来代替。throw用来抛出异常:
thrownewException("mymessage",44);

throw将脚本的执行中止,并使相关的Exception对象对客户代码可用。

以下是改进过的
getCommandObject()
方法

index_php5.php

<?php

//PHP5

require_once(
'cmd_php5/Command.php'
);

class
CommandManager
{

private
$cmdDir
=
"cmd_php5"
;


function
getCommandObject
(
$cmd
){

$path
=
"{$this->cmdDir}/{$cmd}.php"
;

if(!
file_exists
(
$path
)){

thrownew
Exception
(
"Cannotfind$path"
);

}

require_once
$path
;

if(!
class_exists
(
$cmd
)){

thrownew
Exception
(

"class$cmddoesnotexist"
);

}


$class
=new
ReflectionClass
(
$cmd
);

if(!
$class
->
isSubclassOf
(new
ReflectionClass
(
'Command'
))){

thrownew
Exception
(
"$cmdisnotaCommand"
);

}

returnnew
$cmd
();

}

}

?>

代码中我们使用了PHP5的反射(Reflection)API来判断所给的类是否是属于
Command
类型。在错误的路径下执行本脚本将会报出这样的错误:

Fatalerror:Uncaughtexception'Exception'withmessage'Cannotfindcommand/xrealcommand.php'in/home/xyz/BasicException.php:10

Stacktrace:

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

CommandManager->getCommandObject('xrealcommand')

#1{main}

thrownin/home/xyz/BasicException.phponline10
默认地,抛出异常导致一个fatalerror。这意味着使用异常的类内建有安全机制。而仅仅使用一个错误标记,不能拥有这样的功能。处理错误标记失败只会你的脚本使用错误的值来继续执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: