PHP 错误抛出及自定义处理

  • 定义

php中的错误抛出及自定义处理指的是允许我们自定义抛出错误并且捕捉错误并进行处理。类似于

面向对象语言中的throw 及 try...catch...

在php中主要由以下三个函数来完成抛出以及捕捉处理.

trigger_error()

set_exception_handler()

set_error_handle()
  • trigger 简介
    在php中,trigger函数可以触发任一用户级别的错误,在非面向对象编程中,可以做为一种错误提示的方式。

例如:我们编写一个e($n)的函数,而参数必须是一个整数,否则触发错误

/**
 * @param $n
 */
function e($n)
{
  if (!is_int($n)) {
      trigger_error("n is not a number", E_USER_NOTICE);
  }
}

运行结果如下:
图片描述

  • 捕捉错误OR异常(摘自PHP官方文档)

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    if (!(error_reporting() & $errno)) {
        // This error code is not included in error_reporting
        return;
    }

    switch ($errno) {
        case E_USER_ERROR:
            echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
            echo "  Fatal error on line $errline in file $errfile";
            echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
            echo "Aborting...<br />\n";
            exit(1);
            break;

        case E_USER_WARNING:
            echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
            break;

        case E_USER_NOTICE:
            echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
            break;

        default:
            echo "Unknown error type: [$errno] $errstr<br />\n";
            break;
    }

    /* Don't execute PHP internal error handler */
    return true;
}

tomato
309 声望19 粉丝

1个在coding路上越走越迷茫的coder