异常处理(Exceptions)

  • 文件找不到!

  • 数据库连接失败!

  • URL接口访问失败!

  • 磁盘空间不足!

  • 等等

怎么办?

避免使用:

  • die()

  • return false

解决办法:

使用异常处理

  try {
      //好好干,出了问题就抛出去
  } catch (Exception $e) {
      //时刻准备着,接 Exception !
  } finally {
      //怎么玩都逃不出我的手掌心
  }

注意:try 中 return 后 finally 会继续执行,如果 finally 中也有return,则最终返回值为 finally 中 return 的值。

try 中 die 或 exit 后 finally 不会执行。

php7 下实例:

结果:

设置自己的错误处理函数

PHP 中充满了 Notice、Warning等,可以采用设置自己的错误处理函数来捕捉.

如下面的错误:

可以设置自己的错误处理函数:

默认的PHP错误处理流程会绕过 $error_types 中指定的错误类型,除非 $handler 中返回false(当返回false 则不会绕过,无法拦截,并且报错);

如果myErrorHandler正常拦截, error_reporting() 不再有效,除非自己在 $handler 中按当前的 error_reporting 作出判断;

但是,set_error_handler 只能拦截部分错误,对于如下拦截不了的怎么办?

E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, 调用该函数的文件中出现的 E_STRICT

思路: 通过register_shutdown_function函数注册一个在代码执行完毕后自动调用的函数

Last updated

Was this helpful?