Programming/$_머니 (PHP)

[실험 PHP 7.0 6탄] - 많은 치명적 에러들이 예외로 전환 됨

귀찮은 개발자 2024. 2. 9. 19:33
더보기

2022 년도 4월에 작성된 글 입니다. 

PHP 7.0 의 변경 사항

  1. 성능 향상 - PHP 5.6 보다 두배 이상 빠른 속도
  2. 메모리 사용률이 현저히 감소
  3. 추상 구문 트리(Abstract Syntax Tree)
  4. 일관된 64비트 지원(Consistent 64-bit support)
  5. 향상된 예외 상속(Improved Exception hierarchy)
  6. 많은 치명적 에러들이 예외로 전환 됨
  7. 보안 난수 발생기(Secure random number generator)
  8. 오래 됐거나 지원하지 않는 SAPI와 확장 지원 중단
  9. Null 병법 연산자(The null coalescing operator (??))
  10. 리턴 값, 스칼라 타입 정의
  11. 익명 클래스(Anonymous Classes)
  12. Zero cost asserts

PHP 7은 PHP5.6 과 오류를 표시하는 방식을 변경되었다.

 

일반 Error 와 마찬가지고 Exception 은 첫번째 발생한 Error 를 Catch 에서 잡아주고, 매치되는 Error가 없으면 set_exception_handler()에 설정한 Exception Handler 가 호출된다.


기본 예외 처리가 없으면 예외는 치명적인 오류로 변환되고 기존 오류처럼 처리된다.

PHP 5에서는 Error 계층 구조가 Exception 에서 상속되지 않으므로 catch(Exception e) { ... } 을 사용했을때 Exception 에서 Error 가 catch 되지 않는 것을 확인할 수 있다.

 

그리하여 PHP 5.6 에서는 catch (Error e) { ... } 또는 set_exception_handler() 핸들러가 필요했다.
그렇기에 catch (Error $e) { ... } 코드를 사용하거나 set_exception_handler()로 Handler 설정을 해야했다.

 

PHP 7.0 이 되면서 대부분의 에러를 Exception 을 throw 하여 사용 가능하다.