PHP错误及异常学习

PHP在开发过程中,如果不使用提示,那么你会发现写完的代码可以完全不可以用。在哪里出现了问题都不知道,所以使用错误提示,是你开发的最好的伴侣。

1、设置错误报告及设置级别.

错误报告级别:指定了在什么情况下,脚本代码中的错误(这里的错误是广义的错误,包括E_NOTICE注意、E_WARNING警告、E_ERROR致命错误等)会以错误报告的形式输出。

想要开启错误提示:需要在php.ini中设定

display_errors = On

开启状态下,若出现错误,则报错,出现错误提示
关闭状态下,若出现错误,则提示:服务器错误。但是不会出现错误提示

error_reporting  =  E_ALL

代表提示所有错误,上面注释里写的比较详细了,可以只提示一部分的错误信息

2、开启错误日志

log_errors = On

在正式环境下用这个就行了,把错误信息记录在日志里。正好可以关闭错误回显。

当然可以使用ini_set函数和error_reporting函数

ini_set(    'display_error'   , 1 );

error_reporting( E_ALL );

对于PHP开发人员来说,一旦某个产品投入使用,那么第一件事就是应该将display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。

错误日志保存位置 :   yerror_log = “/Applications/MAMP/logs/php_error.log”
syslog表示系统日志, 有些集成环境的错误日志是保存在Apache错误日志里的

3、PHP异常处理

PHP的异常体系是非常简单的,并没有很多用到异常的地方,跟Java一致都是使用throw可以抛出异常,自定义的异常类需要继承父类Exception

 



//自定义异常类 ( 该类必须是 exception 类的子类  )

class cwj95 extends Exception{
    public function errorMessage()
    {
        return $this->getMessage();
    }
}

//设置顶层异常处理器 (Top Level Exception Handler)

function myException($exception)
{
echo "Exception: " , $exception->getMessage();
}

set_exception_handler('myException');        // 函数可设置处理所有未捕获异常的用户定义函数。

如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 “Uncaught Exception” (未捕获异常)的错误消息。

异常的规则

  • 需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。
  • 每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
  • 使用多个 catch 代码块可以捕获不同种类的异常。
  • 可以在 try 代码块内的 catch 代码块中再次抛出(re-thrown)异常。

发表评论

发表评论

*

沙发空缺中,还不快抢~