찾다
백엔드 개발PHP7php7의 예외 및 오류 처리에 대한 자세한 설명

php7의 예외 및 오류 처리에 대한 자세한 설명

먼저 작성자의 PHP 버전은 7.2

    • 예외 및 오류 개요
        • 예외란 무엇인가요?
        • 오류란 무엇인가요? ㅋㅋㅋ
    • 추천 (무료):
    • PHP7
        • 예외 및 오류 개요
        • 예외란 무엇인가요?
        • 예외란 프로그램 운영 중 기대에 미치지 못하는 조건, 정상적인 과정과 다른 현상을 말합니다.
        예를 들어 데이터베이스에 연결했는데 모든 매개변수가 기록되었지만 링크가 연결되지 않는 경우는 예상과 다릅니다.
      try-catch로 잡을 수 있습니다
    오류란 무엇인가요?
PHP 프로그램 자체에 속하는 문제로 일반적으로 잘못된 구문 및 환경 문제로 인해 컴파일러가 검사를 통과하지 못하거나 심지어 실행에 실패하기도 합니다.

평소 접하는 온난화와 주의사항은 모두 오류일 뿐, 수준이 다를 뿐입니다. 예:

TypeError(유형 오류) 내가 지정한 함수 매개변수 유형이 전달된 매개변수와 일치하지 않습니다.

ArithmeticError(산술 오류)

ParseError(파싱 오류) 로드된 파일에 "demo.php"를 포함합니다. ”, 또는 eval()에 구문 오류가 있어 구문 분석이 실패합니다

AssertionError(어설션 오류) 이 오류는 Assert가 적용될 때 발생합니다

pisionByZeroError(분모는 0입니다) 나누기 등의 작업 중 분모는 0입니다

이를 제외하면 나머지는 모두 예외입니다.

예외 처리

이전 php5.Exception에서는 이 인터페이스를 구현했으며 try-catch에서 오류를 던질 수 있습니다

그래서 예외를 catch하려면 미래에는 예외가 오류인지 예외인지 알 수 없으므로 다음과 같은 오류가 발생할 수 있습니다.

try{
    ……
}catch(Throwable $e){
    ……
}

    레벨
  • PHP의 오류에도 레벨이 있습니다
  • 구문 분석 오류 >치명적인 오류 > 완화 > 알림 >지원 중단됨
  • Deprecated 最低级别的错误(不推荐,不建议)
    使用一些过期函数的时候会出现,程序继续执行
    
    Notice 通知级别的错误
    使用一些未定义变量、常量或者数组key没有加引号的时候会出现,程序继续执行
            E_NOTICE      // 运行时通知。表示脚本遇到可能会表现为错误的情况.
            E_USER_NOTICE // 用户产生的通知信息。Waning 警告级别的错误
    程序出问题了,需要修改代码!!!程序继续执行
            E_WARNING         // 运行时警告 (非致命错误)。
            E_CORE_WARNING    // PHP初始化启动过程中发生的警告 (非致命错误) 。
            E_COMPILE_WARNING // 编译警告
            E_USER_WARNING    // 用户产生的警告信息Fatal Error 错误级别的错误
    程序直接报错,需要修改代码!!!中断程序执行,可使用register_shutdown_function()函数在程序终止前触发一个函数
            E_ERROR         // 致命的运行错误,错误无法恢复,暂停执行脚本
            E_CORE_ERROR    // PHP启动时初始化过程中的致命错误
            E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR
            E_USER_ERROR    // 自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)Parse error 语法解析错误
    语法检查阶段报错,需要修改代码!!!中断程序执行,除了修改ini文件,将错误信息写到日志中,什么也做不了
            E_PARSE  //编译时的语法解析错误
  • 사용자 정의 오류 처리기
때때로 PHP와 함께 제공되는 오류 처리기가 우리의 요구 사항을 완전히 충족할 수 없는 경우가 있습니다. 때로는 예외 처리를 수동으로 다시 작성해야 합니다.

php는 이를 처리하는 데 도움이 되는 세 가지 함수, 즉 사용자 정의할 수 있는 오류 핸들러를 호스팅하는

set_error_handler()


함수를 제공합니다. 프로세스.

이 함수 이전 코드에서 오류가 발생하면 아직 등록되지 않았기 때문에 사용자 정의 처리 함수가 호출되지 않습니다.

이 함수를 설정한 후에는 error_reporting()이 유효하지 않습니다다음 수준의 오류는 호출할 수 없습니다. 사용자 정의 함수에서 사용됨: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING 이 함수는 경고 및 참고 수준 오류 중 일부만 잡을 수 있습니다

set_Exception_handler()<p> <code>Parse error >Fatal Error > Waning > Notice >Deprecated

举例
register_shutdown_function(&#39;shutdown&#39;);function shutdown(){
    if ($error = error_get_last()) {
        var_dump($error);
    }
}$name   //没写 ; 号

自定义错误处理程序

有的时候,php 中自带的错误处理程序,并不能完全满足我们得需要,大部分时候,我们都需要手动重写异常处理。

php 给我们提供了三个函数来帮助我们来处理,分别是

set_error_handler()

  • 函数来托管错误处理程序,可自行定制错误的处理流程。
  • 如果此函数之前的代码发生错误,那么不会调用我们自定义的处理函数,因为还未注册
  • 设置此函数后 error_reporting() 将会失效
  • 以下级别的错误不能由用户定义的函数来处理: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING 该函数只能捕捉我们的 部分 Warning 和 Note 级别的错误

set_exception_handler()

  • 用于没有被捕获的异常处理

register_shutdown_function()

  • 作用:注册一个会在php中止时执行的函数
  • 捕获PHP的错误:Fatal Error、Parse Error等,这个方法是PHP脚本执行结束前最后一个调用的函数,比如脚本错误、die()、exit、异常、正常结束都会调用,
  • 如果拿来用错误处理的时候,需要配合error_get_last() 它能获取最后发生的错误。
rrreee

执行结果
Parse error: syntax error, unexpected ';' in /app/swoole/errorDemo.php on line 34잡히지 않는 예외 처리에 사용

register_shutdown_function()

Function: PHP가 종료될 때 실행될 함수를 등록

PHP 잡기 오류 : Fatal Error, Parse Error 등. 이 메소드는 PHP 스크립트 실행이 끝나기 전에 호출되는 마지막 함수입니다. 예를 들어 스크립트 오류, die(), 예외 및 정상 종료가 모두 호출됩니다. 오류 처리를 위해서는 마지막에 발생한 오류를 가져올 수 있는 error_get_last()에 협조해야 합니다.

rrreee

실행 결과

파싱 오류: 구문 오류, 예상치 못한 ';' in /app/swoole/errorDemo.php 34번째 줄

으으으음 말도 안되는 소리 아닌가요? 당연히 실행되지 않나요?🎜🎜사실 그 이유는 프로그램이 실행되기 전에 우리 PHP가 먼저 우리 프로그램의 구문 문제를 확인하고 문제가 없으면 프로그램을 실행할 수 있기 때문입니다. 🎜🎜위 코드가 구문 검사를 통과하지 못했기 때문에 오류가 직접 보고되었습니다. 🎜🎜그럼 질문은요? 우리가 프레임워크 안에 있을 때 왜 프레임워크는 항상 우리에게 오류를 보고합니까? 🎜🎜프레임워크 오류 처리🎜🎜프레임워크에서는 해당 코드가 항목 파일을 통해 로드됩니다. PHP가 구문 오류를 감지하면 index.php만 확인합니다. 필요한 경우에는 감지되지 않습니다. 코드에서 오류가 발생하면 런타임에 오류가 감지되므로 프레임워크가 그에 따라 대응할 수 있습니다 🎜

위 내용은 php7의 예외 및 오류 처리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 CSDN에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
어떤 버전의 PHP7이 새로운 운영자를 소개했습니다어떤 버전의 PHP7이 새로운 운영자를 소개했습니다Mar 03, 2025 pm 04:37 PM

이 기사는 PHP 7의 새로운 운영자 인 Null Coalescing (??), 우주선 (& lt; = & gt;) 및 Null Coalescing 할당 (?? =) 운영자에 대해 자세히 설명합니다. 이들은 NULL 점검 및 비교를 단순화하여 코드 가독성 및 성능을 향상시킵니다.

성능을 향상시키기 위해 PHP7 코드를 최적화하는 방법성능을 향상시키기 위해 PHP7 코드를 최적화하는 방법Mar 03, 2025 pm 04:28 PM

이 기사에서는 성능을위한 PHP7 코드 최적화를 검토합니다. 비효율적 인 데이터베이스 쿼리, I/O 작업 및 메모리 누출과 같은 일반적인 병목 현상을 다룹니다. 솔루션에는 효율적인 코딩 관행, 데이터베이스 및 캐싱 전략, 비 동기력이 포함됩니다.

메모리 소비에 대한 다른 버전의 PHP7의 영향은 무엇입니까?메모리 소비에 대한 다른 버전의 PHP7의 영향은 무엇입니까?Mar 03, 2025 pm 04:35 PM

PHP 7의 사소한 버전 차이는 미묘한 메모리 소비 변동을 산출합니다. 최신 버전은 일반적으로 Zend 엔진 및 쓰레기 수집 최적화를 통해 성능 및 메모리 효율성을 향상 시키지만 그 영향은 응용 프로그램에 따라 다릅니다. 단호합니다

PHP 7에서 세션을 효과적으로 사용하는 방법은 무엇입니까?PHP 7에서 세션을 효과적으로 사용하는 방법은 무엇입니까?Mar 10, 2025 pm 06:20 PM

이 기사는 Session_start (), $ _session, session_destroy () 및 보안 쿠키 처리와 같은 핵심 기능을 다루는 효과적인 PHP 7 세션 관리에 대해 자세히 설명합니다. HTTPS, 세션 ID 재생, S를 포함한 보안 모범 사례를 강조합니다.

PHP7 버전 업데이트에서 수정 된 버그PHP7 버전 업데이트에서 수정 된 버그Mar 03, 2025 pm 04:36 PM

PHP 7은 수많은 버그를 해결하고 성능 향상 및 보안 강화로 이전 버전에서 크게 향상되었습니다. 주요 개선 사항에는 다시 작성된 Zend 엔진 3, 최적화 된 메모리 관리 및 정제 된 오류 처리가 포함되었습니다. 유전자가있는 동안

PHP7 버전 업데이트는 세션 처리에 어떤 영향을 미칩니 까?PHP7 버전 업데이트는 세션 처리에 어떤 영향을 미칩니 까?Mar 03, 2025 pm 04:31 PM

이 기사에서는 PHP7의 세션 처리를 검토하여 향상된 Zend 엔진에서 비롯된 성능 향상을 강조합니다. 업그레이드로 인한 잠재적 호환성 문제에 대해 설명하고 보안 및 확장 성을위한 최적화 전략에 대해 설명합니다.

New Relic과 같은 도구로 PHP 7 성능을 모니터링하는 방법은 무엇입니까?New Relic과 같은 도구로 PHP 7 성능을 모니터링하는 방법은 무엇입니까?Mar 10, 2025 pm 06:28 PM

이 기사에서는 New Relic을 사용하여 PHP 7 응용 프로그램 성능을 모니터링하는 방법을 설명합니다. APDEX 점수 및 응답 시간과 같은 KPIS (Kep Relic의 설정, KPI), 트랜잭션 트레이스 및 오류 트랙을 통한 병목 현상 식별에 대해 자세히 설명합니다.

PHP 5.6에서 PHP 7으로 업그레이드하는 방법은 무엇입니까?PHP 5.6에서 PHP 7으로 업그레이드하는 방법은 무엇입니까?Mar 10, 2025 pm 06:29 PM

이 기사에서는 PHP 5.6을 PHP 7으로 업그레이드하고 백업, 서버 호환성 확인 및 업그레이드 방법 (패키지 관리자, 컴파일, 제어판 또는 웹 서버 구성)과 같은 중요한 단계를 강조합니다. 그것은 Potentia를 다룹니다

See all articles

핫 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를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

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

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

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

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경