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 관련 문서들을 함께 확인해 보세요.