Home > php教程 > php手册 > php gerr 统一的错误处理 v0

php gerr 统一的错误处理 v0

WBOY
Release: 2016-05-27 08:47:08
Original
1043 people have browsed it

一般统一的错误处理机制是使用[异常],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   
}
Copy after login

                       


本文地址:

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

Related labels:
source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template