美文网首页php文录
php异常处理的那些事

php异常处理的那些事

作者: Best博客 | 来源:发表于2019-06-13 18:47 被阅读0次

先上代码:


set_error_handler(function ($errno, $errstr, $errfile, $errline) {

    var_dump('我是下面程序还没有运行前系统充当默认的异常处理函数,下面程序在捕捉到了自己的异常后需要恢复(restore_error_handler)我这个异常捕捉函数');

});

/**
* @param callable $errno 必须。错误级别,是一个integer
* @param string $errstr 必须。错误信息,是一个string
* @param string $errfile 可选。错误的文件名,是一个string
* @param string $errline 可选。错误的行号, 是一个integer
* @throws Exception 异常对象
* @return void | boolean 返回值为false,系统就会追加异常
*/

function errorHandle($errno, $errstr, $errfile, $errline){
    throw new Exception("故意在这里再次抛出异常,然后你用try,catch就可以接收了".$errstr.$errfile);
}

/**

* @return void

*/

function errorReport(){

    set_error_handler('errorHandle');

    $a = 0;

    $b = 11 / $a;

}

try{

    //报错函数,有时候程序报出得错误 Exception 是捕捉不到的,try,catch只能捕捉我们程序自己主动抛出的错误,比如 throw new Exception("我是主动抛出的")

//这个时候如果我们还想捕捉错误,就是本文想要表达的

//set_error_handler能够帮助我们捕获大部分,但其实 set_error_handler 能够捕捉的错误也是有限的,

//如果你想知道实实在在的哪些被捕捉了,哪些可能捕捉不到,这个时候你就需要取了解php错误的类型列表了 @移步 https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html?from=timeline

// 里面请重点关照  error_reporting(), register_shutdown_function(),set_error_handler(),set_exception_handler()
    $a = 1;
    if($a == 2){
        restore_error_handler(); //该函数在退出之前我们得恢复到之前的异常处理机制,所以每一处退出行为之前,都得执行它
        return false;
     }
    $g = errorReport();
}catch (Exception $e){
    restore_error_handler();//这个是 函数恢复之前的错误处理程序。有时候我们在程序中只是为了保证当前函数错误可控,又不能影响到全局异常,那么这个函数登场了
    var_dump($e->getMessage());

}

总结:

1.在php中我们平常用的try,catch只能捕获我们主动抛出的异常,当然除非你的框架已经帮你把异常捕获处理得能够通过try,catch去捕获所有错误了,那也只能说明你是在框架布好的"局"中在写代码.那如果有一天你自己需要写composer包了呢,是不是得了解点,让包健壮点,不然谁该用你的包撒

2.set_error_handler(),能够帮我们主动去捕获一些异常(这里说的主动是你代码在你不知情的情况下报错了,而非throw new Exception 你知道错了手动主动抛出),它和restore_error_handler()可打配合。

3.error_reporting(0),可以让我们的代码在执行过程中遇错了也不往上抛了,从而达到完全全面的接管错误处理

4.register_shutdown_function(),你语法上的错误它也能捕获

5.说来说去,就是不同的错误php会有不同的对待方式,如果你要结管,自己管(好处就是你可以自定义对外输出格式,从而实时让你的程序可控,及健壮),就去要去了解php对待该种错误的方式,意思就是有哪个函数可以接管该异常情况。
点击查看借阅文章

相关文章

  • php异常处理的那些事

    先上代码: 总结: 1.在php中我们平常用的try,catch只能捕获我们主动抛出的异常,当然除非你的框架已经帮...

  • php学习笔记(六)

    PHP异常处理 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过thro...

  • PHP学习笔记 - 进阶篇(10)

    异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过...

  • php 异常处理

    从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出...

  • PHP异常

    抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw...

  • 1.10 PHP异常处理

    1.抛出一个异常 从PHP5开始,PHP支持 异常处理 ,异常处理是面向对象的一个重要特性,PHP代码中的异常通过...

  • 10.2.1 PHP异常处理1

    10.2.1 PHP异常处理1 异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5...

  • 10.2.2 PHP异常处理2

    10.2.2 PHP异常处理2 异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5...

  • 扣丁学堂PHP培训简述PHP如何实现PDO异常处理操作

    本篇文章小编和大家分享一篇PHP开发技术问题:PHP如何实现PDO异常处理操作,文中结合实例分析PHP异常处理的相...

  • PHP 异常处理

    异常(Exception)用于在指定的错误发生时改变脚本的正常流程。 什么是异常? PHP 5 提供了一种新的面向...

网友评论

    本文标题:php异常处理的那些事

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