PHP错误处理

        PHP中默认的错误处理很简单,一条消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的信息。错误处理是代码编写中非常重要的部分。
        报告的错误和被忽略的错误都是由php.ini指令error_reporting控制的,或者在运行时调用error_reporting()。但是强烈建议设置配置指令,因为一些错误在脚本开始执行时产生。在开发环境中通常将error_reporting设置为E_ALL,以便了解并修复PHP所提出的问题。在生产中可能会将其设置为较少输出的级别。PHP对这些错误的处理依赖于另外两个PHP.ini指令。display_errors控制错误是否做为脚本输出的一部分被显示。在生产环境中,应该始终禁用这一功能,因为它可以包含诸如数据库密码之类的机密信息,但在开发中通常是有用的,因为它可以确保即时报告问题。除了显示错误之外,还可以通过启动log_errors指令来记录错误。会将错误记录到由error_log定义的文件或syslog。这在生产环境中非常有用,因为您可以记录发生的错误,然后根据这些错误生成报告。

        die函数

        对于一些可预见并可检测的错误,如要打开的文件不存在等可以通过die函数来输出错误信息并中止脚本的执行。
<?php
if(!file_exists("welcome.txt")){
    die("File not found");
}else{
    $file=fopen("welcome.txt","r");
}
?>

        自定义错误处理函数

        创建一个自定义错误处理函数,在PHP中发生错误时调用该函数。错误处理函数至少要接受两个参数错误级别error_level和错误信息error_message,最多可接受五个参数,另外三个可选参数是发生错误的文件名file、错误发生的行号line-number以及一个包含错误发生时在用的每个变量以及它们的值的数组err_context。错误的触发除了代码错误以外还可以通过调用trigger_error()函数触发。
<?php
function myErrorHandler($errno, $errstr){
    echo("Error:[$errno] $errstr\n");
    echo("end!");
    die();
}

set_error_handler("myErrorHandler");

//echo($test);
$test=2;
if ($test>1)
{
    trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>

        ERROR异常

        PHP7改变了大多数错误的报告方式,与PHP5不同的是,大多数异常做为Error异常被抛出。这些Error异常可以像Exception异常一样被第一个匹配的try/catch块所捕获,如果没有匹配的catch块则调用异常处理函数进行处理,如果未注册异常处理函数,则按传统的方式处理:被报告为一个致命错误。Error不是继承自Exception类所以不能用catch(Exception $e)来捕获,可以通过catch(Error $e)来捕获。通过trigger_error生成的错误不能通过try/catch捕获。PHP7还定义了一些内置错误。
<?php
try{
    doSomething();

}catch(Error $e){
    echo "hello error\n";
    echo $e->getMessage();
}
?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值