PHP:
에러 처리하기

실행 방법:

PHP에서는 try-catch 블록을 사용하여 오류를 관리할 수 있고, 사용자 정의 오류 핸들러 및 예외를 사용하여 처리 과정을 사용자화 할 수 있습니다.

// 기본 try-catch 예제
try {
  // 위험한 작업을 수행
  $file = fopen("nonexistentfile.txt", "r");
} catch (Exception $e) {
  // 오류 처리
  echo "Error: " . $e->getMessage();
}

// 사용자 정의 오류 핸들러 설정
set_error_handler(function($severity, $message, $file, $line) {
  throw new ErrorException($message, 0, $severity, $file, $line);
});

// 예외 사용
class MyException extends Exception {}

try {
  // 무언가를 하고 사용자 정의 예외를 발생시킴
  throw new MyException("Custom error!");
} catch (MyException $e) {
  // 사용자 정의 예외 처리
  echo $e->getMessage();
}

// 샘플 출력:
// Error: fopen(nonexistentfile.txt): failed to open stream: No such file or directory
// Custom error!

심층 분석

예전에 PHP 오류는 스크립트 실행을 멈추지 않는 경고와 알림 같은 것들이었습니다. 언어가 성숙해지면서 PHP 5에서 도입된 Exception 클래스를 통한 더 견고한 객체 지향 오류 처리를 채택했습니다. 나중에 PHP 7이 도입되면서 오류와 예외를 구분하는 Error 클래스가 나왔습니다.

try-catch 블록이 도입되기 전에 PHP는 set_error_handler()를 사용하여 오류를 처리했습니다. try-catch는 더 깔끔하고 현대적입니다. 그러나 사용자 정의 오류 핸들러는 특히 레거시 코드를 다루거나 일반적으로 예외가 아닌 오류를 잡아야 할 때 여전히 자리를 차지하고 있습니다.

PHP 7+의 Throwable 인터페이스는 오류든 예외든 모두 잡을 수 있다는 것을 의미합니다. 이는 이전에 추적하기 어려웠던 심각한 런타임 오류를 놓치지 않게 해주므로 유용합니다.

PHP의 내장 메커니즘 외부의 대안으로는 파일에 오류를 기록하거나 사용자 친화적인 오류 페이지를 표시하는 것과 같은 더 많은 기능을 제공하는 라이브러리 및 프레임워크가 있습니다.

참고 자료