PHP 7의 오류(Errors in PHP 7)

PHP 7의 오류(Errors in PHP 7)

이 페이지는 PHP 7에서 오류 보고 방식이 어떻게 바뀌었는지 다뤄요. PHP 5의 전통적인 오류 보고 메커니즘 대신, 대부분의 오류가 이제 Error 예외를 던지는 방식으로 보고된다는 점이 핵심이에요.

출처: Errors in PHP 7

본문

PHP 7은 PHP가 대부분의 오류를 보고하는 방식을 바꿨어요. PHP 5에서 사용되던 전통적인 오류 보고 메커니즘 대신, 이제 대부분의 오류가 Error 예외를 던져서 보고돼요.

일반적인 예외와 마찬가지로, 이 Error 예외는 첫 번째로 일치하는 catch 블록에 도달할 때까지 버블업돼요. 일치하는 블록이 없다면 set_exception_handler() 로 설치된 기본 예외 핸들러가 호출되고, 기본 예외 핸들러도 없다면 해당 예외는 치명적 오류로 변환되어 전통적인 오류처럼 처리돼요.

Error 계층 구조는 Exception 을 상속하지 않으므로, PHP 5에서 잡히지 않은 예외를 처리하기 위해 catch (Exception $e) { ... } 블록을 사용하던 코드는 이런 Error 를 잡지 못한다는 것을 알게 될 거예요. catch (Error $e) { ... } 블록이나 set_exception_handler() 핸들러가 필요해요.

오류 계층 구조

Throwable
├── Error
│   ├── ArithmeticError
│   │   └── DivisionByZeroError
│   ├── AssertionError
│   ├── CompileError
│   │   └── ParseError
│   ├── TypeError
│   │   └── ArgumentCountError
│   ├── ValueError
│   ├── UnhandledMatchError
│   ├── FiberError
│   └── RequestParseBodyException
└── Exception
    └── ...

더 알아보기

예외(Exception) 모델과 throwable 계층 구조, 그리고 예외를 어떻게 확장하는지에 대해 더 알아보고 싶다면 Exceptions 관련 문서들을 함께 확인해 보세요.