Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 오류(Error) 유형 총정리 – Error 클래스의 속성, 메서드와 계층 구조

개요

PHP에서 내부적으로 발생하는 Error(오류)는 모두 Error 클래스를 상속받은 클래스들로 표현됩니다. Error 클래스는 Throwable 인터페이스를 구현하며, 예외(Exception)와 마찬가지로 try-catch 블록을 통해 처리할 수 있습니다. PHP 7부터 도입된 이 오류 계층 구조는 치명적인 런타임 오류를 객체 지향적으로 다룰 수 있게 해준다는 점에서 큰 의미가 있습니다.

Error 클래스가 제공하는 주요 속성과 메서드는 아래와 같습니다.

주요 속성(Properties)

  • $message – 오류 메시지 내용
  • $code – 오류 코드
  • $file – 오류가 발생한 파일 이름
  • $line – 오류가 발생한 줄 번호

주요 메서드(Methods)

  • __construct() – 오류 객체를 생성합니다
  • getMessage() – 오류 메시지를 반환합니다
  • getPrevious() – 이전에 발생한 Throwable 객체를 반환합니다
  • getCode() – 오류 코드를 반환합니다
  • getFile() – 오류가 발생한 파일을 반환합니다
  • getLine() – 오류가 발생한 줄을 반환합니다
  • getTrace() – 스택 트레이스(stack trace)를 배열 형태로 반환합니다
  • getTraceAsString() – 스택 트레이스를 문자열 형태로 반환합니다
  • __toString() – 오류를 문자열로 표현합니다
  • __clone() – 오류 객체를 복제합니다

PHP 오류(Error) 클래스의 계층 구조

PHP의 Error 클래스들은 다음과 같은 상속 계층 구조로 이루어져 있습니다. 최상위에 Error 클래스가 있으며, 그 아래로 각각의 용도에 맞는 하위 오류 클래스들이 파생됩니다.

  • Error
    • ArithmeticError – 산술 연산 관련 오류
      • DivisionByZeroError – 0으로 나누기 시도 시 발생하는 오류
    • AssertionError – assert() 함수의 조건이 거짓일 때 발생하는 오류
    • CompileError – 컴파일 단계에서 발생하는 오류
      • ParseError – 문법 오류 등으로 스크립트 파싱이 실패했을 때 발생
    • TypeError – 함수 인자나 반환값의 타입이 선언된 타입과 일치하지 않을 때 발생하는 오류
      • ArgumentCountError – 함수 호출 시 전달된 인자 개수가 잘못되었을 때 발생

각 오류 유형을 이해하면 try-catch 블록에서 보다 정교하게 특정 오류만 잡아내거나, 필요에 따라 여러 종류의 오류를 각기 다른 방식으로 처리하는 코드를 작성할 수 있습니다. 예를 들어 DivisionByZeroError만 별도로 catch하여 사용자에게 안내 메시지를 보여주고, 그 외의 오류는 로그로 기록하는 식의 유연한 오류 처리가 가능합니다.