错误

错误类型

  • 语法错误
  • 定义错误
  • 逻辑错误
  • 运行错误
  • 环境错误

使用die语句

用户自定义错误处理器

在php中对错误有不同的级别区分:

错误常量 说明
1 E_ERROR 致命的运行时错误,脚本中止执行
2 E_WARNING 运行时警告,不中止脚本执行
4 E_PARSE 由语言解析器产生的编译错误 ,表示无法执行这个脚本
8 E_NOTICE 注意,所做的事情可能是错误的
16 E_CORE_ERROR 这些错误包括在对语言运行和进行初始化时php产生的错误,使脚本无法执行
32 E_CORE_WARNING 这是在对php的运行环境进行初始化时出现的问题
64 E_COMPILE_ERROR 当脚本中有错误,使php无法执行脚本时php产生的编译器错误
128 E_COMPILE_WARNING 当脚本中有不严重的错误,且不妨碍脚本的正常操作时php产生的编译器错误
256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
2048 E_STRICT php5.0新增的,用于表示不符合保证最大互操作性和未来兼容性的最新建议的编码方式或结构
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL 所有错误和警告,除级别 E_STRICT 以外。(在 PHP 6.0,E_STRICT 是 E_ALL 的一部分)

错误触发器

PHP错误日志

异常

什么是异常

异常(Exception)用于在指定的错误发生时改变脚本的正常流程。

Exception是所有异常的基类

Try, throw 和 catch

正确的处理程序应当包括:

  1. Try – 使用异常的函数应该位于 “try” 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
  2. Throw – 这里规定如何触发异常。每一个 “throw” 必须对应至少一个 “catch”
  3. Catch – “catch” 代码块会捕获异常,并创建一个包含异常信息的对象

  • 捕获到一个异常后,try{} 块里的后续代码不继续执行.
  • 如果有一个异常发生,但是你没有catch 捕获,则提示一个Uncatched Exception.(系统.)
  • 当catch一个异常,你可以处理,也可以不处理,不处理就可以throw new Exception(“信息”).

扩展(extend) PHP 内置的异常处理类

如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用 parent::__construct() 来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载 __toString() 并自定义输出的样式。

Exception 对象不能被复制。尝试对 Exception 对象复制 会导致一个 E_ERROR 级别的错误。

结果如下:

分类: 后端

发表评论

电子邮件地址不会被公开。 必填项已用*标注