加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP 7 错误处理

发布时间:2022-09-15 12:44:50 所属栏目:PHP教程 来源:
导读:  在这篇文章中,我们将学习“PHP7错误处理机制怎样理解,实际应用中是怎样的”的相关知识,下文有详细的介绍及示例,小编觉得挺不错的,有需要的朋友可以借鉴参考,希望对大家阅读完这篇能有所获。
  在这篇文章中,我们将学习“PHP7错误处理机制怎样理解,实际应用中是怎样的”的相关知识,下文有详细的介绍及示例,小编觉得挺不错的,有需要的朋友可以借鉴参考,希望对大家阅读完这篇能有所获。
 
  一、现在有两个异常类:Exception and Error.
 
  PHP7现在有两个异常类,Exception and Error。这两个类都实现了一个新的接口:Throwable。在您的异常处理代码中,类型暗示可能需要调整下。
 
  二、一些致命错误和可恢复致命错误改为抛出Error对象。
 
  有一些致命错误和可恢复致命错误现在改为报出Error对象。Error对象是和Exception独立的,它们无法被常规的try/catch扑获。编者按:需要注册错误处理函数,请参考下面的RFC。
 
  对于这些已经转为异常的可恢复致命错误,已经无法通过error handler静默的忽略掉。尤其是无法忽略类型暗示错误。
 
  三、语法错误会抛出一个ParseError对象
 
  语法错误会抛出一个ParseError对象,该对象继承自Error对象。之前处理eval()的时候,对于潜在可能错误的代码除了检查返回值或者error_get_last()之外,还应该捕获ParseError对象。
 
  四、内部对象的构造方法如果失败的时候总会抛出异常
 
  内部对象的构造方法如果失败的时候总会报出异常。之前的有一些构造方法会返回NULL或者一个无法使用的对象。
 
  五、一些E_STRICT错误的级别调整了。
 
  PHP 7 错误处理
 
  PHP 7 改变了大多数错误的报告方式。不同于 PHP 5 的传统错误报告机制,现在大多数错误被作为 Error 异常抛出。
 
  这种 Error 异常可以像普通异常一样被 try / catch 块所捕获。如果没有匹配的 try / catch 块, 则调用异常处理函数(由 set_exception_handler() 注册)进行处理。 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。
 
  Error 类并不是从 Exception 类 扩展出来的,所以用 catch (Exception $e) { ... } 这样的代码是捕获不 到 Error 的。你可以用 catch (Error $e) { ... } 这样的代码,或者通过注册异常处理函数( set_exception_handler())来捕获 Error。
 
  Error 异常层次结构
 
  1.Error
 
  2.Exception
 
  ...

  实例
 
  php 显示所有错误_PHP错误处理_php 开启错误提示
 
  $value = $this->n % 0;     
  return $value;    
  } catch (DivisionByZeroError $e) {     
  return $e->getMessage();    
  }  
  } }
  $mathOperationsObj = new MathOperations();
   print($mathOperationsObj->doOperation());
  ?>
  以上程序执行输出结果为:
 
  Modulo by zero
  PHP 7 异常
 
  PHP 7 异常用于向下兼容及增强旧的assert()函数。它能在生产环境中实现零成本的断言,并且提供抛出自定义异常及错误的能力。
 
  老版本的API出于兼容目的将继续被维护,assert()现在是一个语言结构,它允许第一个参数是一个表达式,而不仅仅是一个待计算的 string或一个待测试的boolean。
 
  assert() 配置
 
  配置项
 
  默认值
 
  可选值
 
  zend.assertions
 
  1
 
  assert.exception
 
  0
 
  参数
 
  assertion
 
  断言。在 PHP 5 中,是一个用于执行的字符串或者用于测试的布尔值。在 PHP 7 中,可以是一个返回任何值的表达式, 它将被执行结果用于指明断言是否成功。
 
  description
 
  如果 assertion 失败了,选项 description 将会包括在失败信息里。
 
  exception
 
  在 PHP 7 中,第二个参数可以是一个 Throwable 对象,而不是一个字符串PHP错误处理,如果断言失败且启用了 assert.exception 该对象将被抛出。
 
  实例
 
  将 zend.assertions 设置为 0:

  以上程序执行输出结果为:
 
  Hi!
  将 zend.assertions 设置为 1,assert.exception 设置为 1:

  以上程序执行输出结果为:
 
  Fatal error: Uncaught AssertionError:
  assert(true == false) in -:2Stack trace:#0 -(2):
  assert(false, 'assert(true == ...')#1 {main}
   thrown in - on line 2
  关于“PHP7错误处理机制怎样理解,实际应用中是怎样的”的内容就介绍到这,感谢各位的阅读,相信大家对PHP7错误处理机制怎样理解,实际应用中是怎样的已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!
 

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!