찾다
php教程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   
}

                       


本文地址:

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

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음