首页 > php基础 > PHP5的异常处理机制之使用Throw关键字

PHP5的异常处理机制之使用Throw关键字

建立一个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 {
  private $cmdDir = "cmd_php5";
  function getCommandObject($cmd) {
      $path = "{$this->cmdDir}/{$cmd}.php";
      if(!file_exists($path)) {
            thrownew Exception("Cannot find $path");
        }
        require_once $path;
        if(!class_exists($cmd)) {
            throw new Exception("class $cmd does not exist");
        }
        $class = new ReflectionClass($cmd);
        if(!$class->isSubclassOf(new ReflectionClass('Command'))) {
            throw new Exception("$cmd is not a 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 {main}

thrown in /home/xyz/BasicException.php on line 10

默认地,抛出异常导致一个fatal error。这意味着使用异常的类内建有安全机制。而仅仅使用一个错误标记,不能拥有这样的功能。处理错误标记失败只会你的脚本使用错误的值来继续执行。


永久链接:http://www.phprm.com/base/65f4406c1e7714ea3c5733da7d0c9065.html

转载随意!带上文章地址吧。

标签:none

发表留言