美文网首页PHP基础知识PHP开发
PHP异常、错误处理机制笔记

PHP异常、错误处理机制笔记

作者: 刘振 | 来源:发表于2016-01-17 15:03 被阅读566次

本文介绍PHP的异常,错误以及如何屏蔽错误。
参考:
php异常、错误处理机制PHP错误提示的关闭方法详解


首先要明白异常跟错误是不一样的,异常是出现正常逻辑之外的情况,而错误是指运行时出错了,比如,使用了一个未定义的变量等,异常需要抛出(throw)才能被捕捉到,而错误会导致程序执行终止

异常

使用try{}catch{}捕获异常

<?php
try {
    throw new Exception("A terrible",13);
}
catch(Exception $e){
    echo $e->getCode()."<br>";
    echo $e->getMessage()."<br>";
    echo '错误在'.$e->getFile().'行'.$e->getLine()."列<br>";

    var_dump( $e->getTrace() );
    echo "<br>".$e->getTraceAsString();
    echo "<br>".$e->__toString()."<br>";//echo "<br>".$e;
}
?>

可以直接使用set_exception_handler函数捕获throw抛出的异常

<?php
//设置一个用户的函数(error)来处理脚本中出现的错误。
//set_exception_handler()会自动捕捉错误
set_exception_handler('exception1');
throw new Exception("kkkkkkkkkkkkkkkk");
function exception1(Exception $exception){
    echo $exception->getMessage();
}
?>

错误

用户自定义的错误处理

<?php
set_error_handler('errorHandler');  
trigger_error("这里描述错误",E_USER_ERROR);
//E_USER_ERROR:该error 所特定的错误类型,默认是E_USER_NOTICE
function errorHandler($errno,$errstr){
//用户的函数需要接受两个参数:错误码和描述错误的 string
    if($errno==E_USER_ERROR){  
        echo "错误为:",$errstr.'<br>';  
    } 
}
?>

使用函数捕获系统不提示的错误
前几个都不知如何使用,如果使用这个可以在变量未定义就调用时提示错误

<?php
set_error_handler('errorHandler2');  
echo $ccc;
function errorHandler2($errno,$errstr){
//用户的函数需要接受两个参数:错误码和描述错误的 string
    if($errno==E_NOTICE){//这里应该是如果出现(默认)非用户错误
        echo "错误为:",$errstr;  
    } 
}
echo "<br>这里正常运行";
?>

屏蔽php错误

错误的种类

  • 注意(Notices)这些都是比较小而且不严重的错误,比如去访问一个未被定义的变量。通常,这类的错误是不提示给用户的,但有时这些错误会影响到运行的结果。
  • ** 警告(Warnings)**这就是稍微严重一些的错误了,比如想要包含include()一个本身不存在的文件。这样的错误信息会提示给用户,但不会导致程序终止运行。
  • 致命错误(Fatal errors)这些就是严重的错误,比如你想要初始化一个根本不存在的类的对象,或调用一个不存在的函数,这些错误会导致程序停止运行,PHP也会把这些错误展现给用户。

屏蔽错误的方法

方法一:在有可能出错的函数前加@,然后or die("")
如: @mysql_connect(...) or die("Database Connect Error")
再例如:

<?php
    $file=fopen("filename.php", 'r');
    //返回Warning: fopen(filename.php): failed to open stream: No such file or directory in E:\xampp\htdocs\php\error-1.php on line 7
    @$file=fopen("filename.php", 'r') or die('没有找到该文件');
    //返回"没有找到该文件"
?>

方法二:编辑php.ini ,查找"display_errors =" ,将“=”后面的值改为"off。
可以百度有详解,在测试过程中最好不要修改
方法三:在php脚本前加error_reporting(0),屏蔽所有错误提示。其中,error_reporting 配置错误信息回报的等级。


总结,异常和错误处理现在还不会应用。
屏蔽错误十分有用且第一种方法最常用。
持续学习中,不定期更新

相关文章

  • PHP异常、错误处理机制笔记

    本文介绍PHP的异常,错误以及如何屏蔽错误。参考:php异常、错误处理机制、PHP错误提示的关闭方法详解 首先要明...

  • 系统化理解PHP中的错误和异常

    PHP语言简单的原因之一就是PHP的错误处理机制,随着PHP语言越来越现代化,也出现了异常,这篇博文就是简单说下错...

  • php异常和错误处理机制

    在PHP中,错误和异常是两个不同的概念,这种设计从根本上导致了PHP的异常和其他语言相异。以Java为例,Java...

  • Go 语言基础——错误处理

    学习目标 掌握错误处理 掌握自定义错误处理 掌握defer关键字的使用 错误处理 GO没有异常处理机制 Go语言引...

  • golang

    golang go和php的区别类型:go为编译性语言;php解释性语言错误:go的错误处理机制;php本身或者框...

  • python中try...except...else...fin

    异常处理 python中我们会使用try...except...else...finally...的错误处理机制,...

  • Go编写好的错误处理

    编写好的错误处理 Go的错误机制: 没有异常机制 error 类型实现了 error 接口type error i...

  • 7.31异常学习总结

    什么事异常 Java编程语言使用异常处理机制为程序提供了错误处理的能力 异常的继承体系 异常的产生过程: 抛出异常...

  • PHP学习笔记-异常处理机制

    最近在项目开发中,需要用到异常处理机制。 异常(Exception)是一种错误处理机制,用于在指定的错误发生时改变...

  • NDK开发---C++学习(七):异常

    前言 C++的异常处理机制能够将异常检测与异常处理分离开来,当异常发生时,它能自动调用异常处理程序进行错误处理。把...

网友评论

    本文标题:PHP异常、错误处理机制笔记

    本文链接:https://www.haomeiwen.com/subject/ivfkkttx.html