`

PHP 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)) { 
    throw new 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。这意味着使用异常的类内建有安全机制。而仅仅使用一个错误标记,不能拥有这样的功能。处理错误标记失败只会你的脚本使用错误的值来继续执行。 

分享到:
评论

相关推荐

    详细解读php的异常处理机制-参考源码

    PHP的异常是通过`throw`语句抛出的,通常与错误类(如`Exception`或其子类)结合使用: ```php throw new Exception('错误信息'); ``` 除了基础的`Exception`类,PHP还提供了许多内置的异常类,如`...

    PHP Exception(异常处理).md

    当程序检测到某种异常情况时,可以通过`throw`语句抛出一个异常对象。这个异常对象通常是由`Exception`类或其子类实例化而来,包含了关于异常的具体信息。例如: ```php throw new Exception("这是异常信息"); ``` ...

    PHP5面向对象开发教程第五章-PHP5异常处理

    在PHP5中,异常处理通过`try`、`catch`和`throw`关键字实现。 1. **异常的创建和抛出** 使用`throw`关键字可以抛出一个异常。异常可以是任何实现了`Exception`类或其子类的对象。例如: ```php throw new ...

    PHP中的错误处理、异常处理机制分析

    PHP还提供了`throw`关键字来抛出自定义异常,例如: ```php throw new InvalidArgumentException('参数无效'); ``` 这可以在检测到错误条件时使用,然后在`try-catch`结构中捕获并处理。 异常处理与错误处理相比,...

    PHP异常处理

    这通常通过`throw`关键字完成,后面跟着一个异常对象。异常对象通常是实例化的`Exception`类或其子类。例如: ```php throw new Exception('An error occurred'); ``` 一旦异常被抛出,正常的代码执行流程会被中断...

    php函数上百个实例中文注解 写程序直接复制修改即可省事

    PHP中异常处理可以使用`throw`和`throwable`接口: ```php throw new Exception('出现了一个错误'); ``` 以上只是PHP编程中的一小部分知识点,实际的压缩包文件可能包含了更丰富的函数实例,涵盖字符串处理、...

    ThinkPHP多语言的使用和配置

    Throw_exception(L('ADD_USER_ERROR')); ``` 此外,语言包还可以按模块来定义。例如,针对`User`模块,可以在`Lang/zh-cn/user.php`中定义特定于该模块的语言项。 #### 多语言自动识别与切换 ThinkPHP具备自动...

    php 异常处理实现代码

    通过`throw new Exception`语句,我们可以创建一个新的异常对象,并传入错误消息和错误码。 在第二个示例中,`file_open`函数被直接调用,没有使用`try-catch`结构。但在实际开发中,通常会将可能引发异常的代码...

    PHP原理之异常机制深入分析

    当`throw`语句被触发时,当前的执行流程会被中断,转而寻找合适的`catch`块来处理这个异常。如果找不到匹配的`catch`块,程序会终止,并显示未捕获的异常信息。 在PHP5.3之前,每个可独立执行的`op array`(操作...

    PHP异常类及异常处理操作实例详解

    异常处理的基本语法结构包括try、throw和catch。 1. try语句块:`try`用来包裹可能会抛出异常的代码段。如果在这个区域内发生了异常,程序会立即跳转到相应的`catch`块来处理异常,而不是停止执行。这使得程序能够...

    PHP异常处理定义与使用方法分析

    要抛出一个异常,可以使用`throw`关键字,后面跟着一个`Exception`对象或者其子类的实例。例如: ```php throw new Exception('错误信息', 123); ``` 异常的捕获和处理: 使用`try...catch`结构来捕获并处理异常。...

    PHP的异常处理类Exception的使用及说明

    在PHP中,当遇到不可预见的情况或者需要报告错误时,可以通过`throw`关键字抛出一个异常。例如,上述代码中展示了如何创建一个简单的`Exception`实例并抛出: ```php throw new Exception('message', code); ``` ...

    exception

    PHP异常的基本语法结构包括抛出异常(throw),捕获异常(catch)和定义异常类(Exception class)。当程序遇到无法正常处理的情况时,可以使用`throw`语句抛出一个异常。例如: ```php throw new Exception('An ...

    简单的处理emoji的PHP类库.zip

     throw new InvalidArgumentException(sprintf('The emoji config file "%s" does not exist', $configFile)); } $emojis = json_decode(file_get_contents($configFile), true); if ($...

    《PHP从入门到精通(第3版) PDF

    - **异常处理:** 使用`try`、`catch`、`throw`关键词进行错误管理。 #### 8. PHP应用的部署 - **服务器配置:** 如Apache或Nginx的配置。 - **虚拟主机设置:** 管理多个PHP应用的部署。 - **PHP扩展开发:** 开发...

    php 把对象转化为json

    throw new Exception('json_encode 错误:' . json_last_error_msg()); } return $json; } // 使用示例 try { $user = new User('李四', 40); $json = encodeToJson($user, JSON_PRETTY_PRINT); echo $json; ...

    php字典—php快速入门

    2. **异常处理**:使用`try...catch`块捕获和处理异常,`throw`抛出异常。 ### 六、PHP sessions 和 cookies 1. **session**:用于存储用户会话信息,`session_start`启动会话,`$_SESSION`数组存储和读取数据。 2...

    PHP扩展开发中文教程

    此外,错误处理和异常处理也是必不可少的,需要通过`zend_error_noreturn`和`throw_exception`等函数来确保程序的健壮性。 扩展中的性能优化也是重要一环。理解如何使用ZEND引擎提供的优化特性,如哈希表操作、快速...

    php书籍源代码

    2. 异常处理:介绍try-catch语句,以及throw和catch关键字的应用,理解异常处理的优势。 六、PHP会话与Cookie管理 1. 会话控制:了解session_start()启动会话,$_SESSION超级全局变量的使用,以及如何存储和读取...

Global site tag (gtag.js) - Google Analytics