search
Homephp教程php手册php gerr 统一的错误处理 v0

一般统一的错误处理机制是使用[异常],PHP也提供了异常的功能,但异常对概念及知识面都有要求,才能用好,为避免复杂,所以不使用异常作为统一的错误处理.

网站程序的错误处理,最常用的就是中断程序执行,显示给用户一个提示框,比如在控制器中使用 showmessage() 进行错误提示,所以,在控制器中直接使用 showmessage() 中提示即可.

不过,showmessage() 并不适合在类方法及函数中使用,因为有时调用者需要自己对错误进行处理,比如,错误提示使用 JS 的 alert() 弹出,而不是显示一个 html 页面,因此,要统一的是类方法中及函数中的错误处理.

保守的写法是函数返回 true 或 false,并通过比如传地址的参数传递错误信息:

bool func_name(& $error)

类方法则在类中定义一个 get_error() 之类的方法返回最后一次错误信息.

但是,当出现然"地支持错误信息的向上传递,手动模拟的向上传递代码写起来都很麻烦,不愿意写.

网站程序的错误处多层调用时,比如 调用者 -> A() -> B() -> C() ,在 C 函数中出现错误,这种方式要传递错误信息就很麻烦了:B() 要处理并兼容 C() 的错误处理,A() 要兼容 B() 的错误处理.

只有异常才很"自理,就是想在发生错误时默认就给用户一个提示并中断程序执行,并且当调用者需要自定义如何处理错误时允许调用者自定义.

所以,统一的错误处理就是默认直接对用户进行中断提示,比如数据库插入错误,又允许调用者需要的时候可以自定义处理错误,比如使用 JS 弹出错误信息.

于是,引入 gerr 类统一网站程序的错误处理:

gerr 类位于 /include/gerr.class.php,类名为 gerr,所有方法都为静态方法,无需也无法实例化.phprm.com

当方法或函数中出现错误时,调用 gerr::error() 设置错误信息并返回 false.

默认 gerr::error() 会调用 showmessge() 进行错误提示。

当调用者需要自定义处理错误时,可以调用 gerr::func_set() 设置一个自定义的错误处理函数,gerr::error() 便会调用调用者设置的错误处理函数进行错误处理.

一般来说错误处理方式都是由控制器决定的,所以 gerr::func_set() 一般是在控制器中调用。可以使用 gerr::func_reset() 把错误处理函数重置为默认函数。

在方法和函数中,可以使用 gerr::check() 检查是否已发生错误(一般发生错误都需要中断程序执行,不中断继续执行只会发生更多的错误),防止已发生的错误未被处理.

若类方法或函数使用"流程"的形式组织(比如要先 fopen 后才能 fwrite),在流程开始时调用 gerr::start() 让 gerr 进行流程的初始化,在流程成功完成后调用 gerr::end() 通知 gerr 流程已结束。

可以使用 gerr::get() 取得错误信息。

一个使用 gerr 的函数示例:

function myerr()   
{   
    if (false)   
    {   
        gerr::error('发生错误了', __FILE__, __LINE__, __FUNCTION__);   
        return false;   
    }   
    return true   
}

                       


本文地址:

转载随意,但请附上文章地址:-)

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
PHP中的错误处理机制是什么?PHP中的错误处理机制是什么?May 12, 2023 pm 07:31 PM

PHP是一种流行而强大的服务器端编程语言,可以用来开发各种Web应用程序。就像其他编程语言一样,PHP也有可能会出现错误和异常。这些错误和异常可能由各种原因引起,如程序错误、服务器错误、用户输入错误等等。为了确保程序的运行稳定性和可靠性,PHP提供了一套完整的错误处理机制。PHP错误处理机制的基本思想是:当发生错误时,程序会停止执行并输出一条错误消息。我们可

如何处理 PHP 中的语法错误如何处理 PHP 中的语法错误Aug 07, 2023 pm 04:46 PM

如何处理PHP中的语法错误引言:在开发PHP程序时,经常会遇到语法错误的情况。语法错误是由于代码违反了PHP语法规则所引起的,它会导致脚本无法正确执行。本文将介绍一些处理PHP语法错误的方法,并提供相应的代码示例。使用错误提示功能PHP提供了丰富的错误提示功能,在开发过程中可以打开这些提示,以便及时发现和解决语法错误。可以通过设置erro

PHP文件操作错误的处理方法及生成相应报错信息PHP文件操作错误的处理方法及生成相应报错信息Aug 08, 2023 am 10:30 AM

PHP文件操作错误的处理方法及生成相应报错信息在使用PHP进行文件操作时,可能会遇到各种错误,如找不到文件、权限错误等。这些错误可能会导致程序无法正常运行,因此合理处理文件操作错误是非常重要的。本文将介绍PHP文件操作错误的处理方法,并展示如何生成相应的报错信息。一、错误处理方法使用错误控制运算符PHP提供了错误控制运算符“@”,可以在执行可能出错的语句前添

如何处理PHP文件路径错误并生成对应的报错信息如何处理PHP文件路径错误并生成对应的报错信息Aug 06, 2023 am 10:12 AM

如何处理PHP文件路径错误并生成对应的报错信息在开发和维护PHP应用程序时,经常会遇到文件路径错误的情况。当引用一个不存在的文件或者指定了错误的路径时,在PHP中会抛出一个致命错误,导致应用程序无法正常运行。为了更好地调试和处理这种情况,我们可以通过以下方式来处理PHP文件路径错误,并生成对应的报错信息。使用绝对路径在引用文件时,尽量使用绝对路径而不是相对路

如何进行PHP后端功能开发的错误处理?如何进行PHP后端功能开发的错误处理?Aug 04, 2023 pm 01:19 PM

如何进行PHP后端功能开发的错误处理?作为一名PHP后端开发人员,在开发过程中,我们经常会遇到各种错误。良好的错误处理是保证系统稳定性和用户体验的重要因素。在本文中,我将分享一些如何进行PHP后端功能开发的错误处理的方法和技巧,并提供相应的代码示例。设置错误报告级别PHP提供了一个错误报告级别参数,可以通过设置来定义要报告的错误类型。使用error_repo

解决PHP报错:调用未定义的类方法解决PHP报错:调用未定义的类方法Aug 18, 2023 pm 05:09 PM

解决PHP报错:调用未定义的类方法在进行PHP开发过程中,经常会遇到调用未定义的类方法的报错。这种情况一般是由于代码编写不规范或者使用的类方法不存在而导致的。下面我们将介绍一些解决该问题的常见方法。检查类方法是否存在当报错提示调用未定义的类方法时,首先要检查该方法是否存在于对应的类中。通过使用method_exists()函数可以检查某个类是否存在某个方法。

PHP 错误处理:最佳实践和建议PHP 错误处理:最佳实践和建议Aug 07, 2023 pm 12:25 PM

PHP错误处理:最佳实践和建议在编写PHP代码时,错误处理是一项非常重要的任务。如果不正确地处理错误,就会导致应用程序中的漏洞和安全问题。同时,良好的错误处理还有助于提高代码的可维护性和可扩展性。本文将介绍一些PHP错误处理的最佳实践和建议,并提供一些代码示例。使用异常处理在PHP中,异常是一种用于处理运行时错误的机制。通过使用异常,可以将错误

处理PHP源代码中index报错的方法处理PHP源代码中index报错的方法Mar 11, 2024 am 08:39 AM

处理PHP源代码中index报错的方法在PHP开发过程中,经常会遇到"indexundefined"的报错。这种报错通常是由于尝试访问数组或对象中不存在的索引而引起的。解决这种问题的方法有很多种,以下将结合具体的代码示例来展示几种处理的方法。方法一:使用isset()函数isset()函数用于检查变量是否已经被声明以及是否有值。通过使用isset()函数,

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.