广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP出现全局异常/错误的解决方法
  • 461
分享到

PHP出现全局异常/错误的解决方法

2023-06-20 17:06:28 461人浏览 薄情痞子
摘要

小编给大家分享一下PHP出现全局异常/错误的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!异常如果我们抛出一个 Exception 而没有进行 try c

小编给大家分享一下PHP出现全局异常/错误的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

异常

如果我们抛出一个 Exception 而没有进行 try catch 捕捉处理,系统将会产生致命错误,dump 出相关信息后退出执行。

throw new Exception("Error Processing Request", 1);Fatal error: Uncaught exception 'Exception' with message 'Error Processing Request'

set_exception_handler 则可以设定一个全局的异常处理函数,在异常没有被 try catch 处理时系统会将异常交于此函数处理

<?phpfunction func_exception_handler($exception){    echo "User Exception:" .        " [" . $exception->getCode() . "]" .        " message " . $exception->getMessage() .        " in file " . $exception->getFile() .        " on line " . $exception->getLine() . PHP_EOL;}//如果不设定全局的异常处理函数 且 抛出异常时不使用 try catch 处理则会 fatal errorset_exception_handler("func_exception_handler");try {    throw new Exception("我会被 try catch 捕捉处理,不影响执行流程!");} catch (Exception $e) {    echo $e->getMessage() . PHP_EOL;}throw new Exception("我没有被 try catch 捕捉处理,会被全局 set_exception_handler 处理!");echo "没有被 try catch 处理的异常在我之前抛出,虽然被 set_exception_handler 但仍然会立刻退出执行,执行不到我哟" . PHP_EOL;

注意:不过因为仍没有对异常进行 try catch 处理,处理完后程序还是会退出执行,后续代码不会被执行。

错误

PHP 的错误我们经常遇到的有: ERROR/WARNING/NOTICE

我们可以使用 trigger_error 函数进行错误触发,同时使用 set_error_handler 来定义我们自己的错误处理函数。

trigger_error 默认触发的是用户级的 NOTICE 错误,不会影响执行流程,代码会继续执行,我们可以在触发时自己定义错误级别

注意:set_error_handler 是拦截用户级的错误,它并不能让脚本退出执行,除非你在自己的处理代码中手动实现错误级别的判断。如果没有进行拦截则用户级的错误也会交于系统的错误处理机制,系统的错误处理机制则是 error 退出,warning notice 提示后继续执行。

trigger_error("notice, Go on!", E_USER_NOTICE);echo "executing!" . PHP_EOL;trigger_error("warning, go on!", E_USER_WARNING);echo "executing!" . PHP_EOL;trigger_error("error, exit!", E_USER_ERROR);echo "not execute!";

自定义错误处理后错误将不会再传递给系统处理

<?phpfunction func_error_handler($err_no, $err_msg, $err_file, $err_line){    //trigger_error 默认触发的为 notice 级别的用户错误    $level = [        E_USER_ERROR => "Error",        E_USER_WARNING => "Waring",        E_USER_NOTICE => "Notice"    ];    echo "User {$level[$err_no]}: " .        " [" . $err_no . "]" .        " message " . $err_msg .        " in file " . $err_file .        " on line " . $err_line . PHP_EOL;    //如果需要 我们可以手动判断错误级别是否退出执行    if ($err_no == E_USER_ERROR) {        exit("fatal error, exit!");    }}set_error_handler("func_error_handler");trigger_error("notice, go on!", E_USER_NOTICE);trigger_error("warning, go on!", E_USER_WARNING);trigger_error("error, exit!", E_USER_ERROR);

提示:

异常抛出但不使用 try catch 处理,系统会产生一个致命错误导致脚本退出执行,set_exception_handler 只是将没有被 try catch 处理的异常进行捕捉,自定义一些友好的信息输出,并不能阻止致命错误的产生,脚本依然会退出执行。

set_error_handler 则会将用户触发的错误拦截下来进行处理,而不再提交给系统,但它不会自动识别错误级别,我们需要手动判断是否为 ERROR 级的进行退出,还是 WARNING 或 NOTICE 级的进行提示后继续执行。

以上是“PHP出现全局异常/错误的解决方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: PHP出现全局异常/错误的解决方法

本文链接: https://www.lsjlt.com/news/298731.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP出现全局异常/错误的解决方法
    小编给大家分享一下PHP出现全局异常/错误的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!异常如果我们抛出一个 Exception 而没有进行 try c...
    99+
    2023-06-20
  • Java中出现java.lang.IllegalStateException异常错误的解决
    目录java.lang.IllegalStateException异常错误的解决java.lang.IllegalStateException: 启动子级时出错1、情况一:@WebS...
    99+
    2023-01-09
    Java异常错误 java.lang.IllegalStateException异常错误 Java异常解决
  • php出现http500错误问题的解决方法
    这篇文章给大家分享的是有关php出现http500错误问题的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php http500错误的解决办法:1、打开IIS,重新启动FastCGI;2、将“requir...
    99+
    2023-06-06
  • 在springboot中springmvc出现抛出全局异常如何解决
    在springboot中springmvc出现抛出全局异常如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。springboot中抛出异常,springbo...
    99+
    2023-05-31
    springboot springmvc 全局异常
  • mysql出现1044错误的解决方法
    这篇文章主要介绍了mysql出现1044错误的解决方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql出现1044错误的解决办法:首先c...
    99+
    2022-10-18
  • navicat出现10061错误的解决方法
    这篇文章给大家分享的是有关navicat出现10061错误的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。1、使用鼠标右键单击下方的任务栏,打开其中的任务管理器界面!2、...
    99+
    2022-10-18
  • mysql 出现1062错误的解决方法
    小编给大家分享一下mysql 出现1062错误的解决方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql 出现1062错误的解决办法:首先打开mysql的配置文件【my.cnf】;然后...
    99+
    2022-10-18
  • mysql出现1267错误的解决方法
    这篇文章主要介绍了mysql出现1267错误的解决方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql 出现1267错误的解决办法:在执...
    99+
    2022-10-18
  • mysql出现1071错误的解决方法
    这篇文章主要介绍mysql出现1071错误的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql 出现1071错误的解决办法:该问题是由键值字段长度过长导致,mysql支...
    99+
    2022-10-18
  • navicat出现1045错误的解决方法
    这篇文章主要介绍了navicat出现1045错误的解决方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。出现的问题:1045-Access&nb...
    99+
    2022-10-18
  • navicat出现1862错误的解决方法
    小编给大家分享一下navicat出现1862错误的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!问题描述:用navicat连接本地数据库报错,连接远程服务器正常。方法一: 1. 关...
    99+
    2022-10-18
  • navicat出现1007错误的解决方法
    这篇文章给大家分享的是有关navicat出现1007错误的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、错误描述1 queries execute...
    99+
    2022-10-18
  • phpmyadmin出现2002错误的解决方法
    这篇文章给大家分享的是有关phpmyadmin出现2002错误的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。phpmyadmin 200错误的解决办法:首先找到文件【c...
    99+
    2022-10-18
  • phpmyadmin出现403错误的解决方法
    这篇文章主要介绍phpmyadmin出现403错误的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!phpmyadmin出现403错误的解决办法:首先找到【http://loc...
    99+
    2022-10-18
  • phpmyadmin出现1862错误的解决方法
    这篇文章将为大家详细讲解有关phpmyadmin出现1862错误的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。phpmyadmin 1862错误的解决办法:首先...
    99+
    2022-10-18
  • Python出现segfault错误解决方法
    本文分析了Python出现segfault错误解决方法。分享给大家供大家参考,具体如下: 最近python程序在运行过程中偶尔会引发系统segfault的错误,而且是在不定期不同代码段时发生的,所以单步调试...
    99+
    2022-06-04
    解决方法 错误 Python
  • MySQL出现Waitingfortablemetadatalock异常的解决方法
    目录1. 出现原因2. 处理方式1. 出现原因 当对某个表执行DDL 语句时,将会自动给此表加上 mdl 元数据write 锁,直到事务提交才会释放。此锁的作用是为了保护 表结构的完...
    99+
    2023-05-15
    MySQL解决Waiting for table metadata lock异常 MySQL Waiting for table metadata lock异常 MySQL 异常
  • mysql出现错误码1130的解决方法
    这篇文章主要介绍了mysql出现错误码1130的解决方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql出现错误码1130的解决办法:首...
    99+
    2022-10-18
  • navicat中出现2005错误的解决方法
    这篇文章主要介绍navicat中出现2005错误的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!关于Navicat for MySQL 连接 MySQL 报2005 -Unk...
    99+
    2022-10-18
  • navicat中出现1251错误的解决方法
    这篇文章主要介绍navicat中出现1251错误的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  navicat在连接MySQL8.0及以上版本的时候,总是报错1251;原...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作