> 백엔드 개발 > PHP 튜토리얼 > PHP가 오류 및 예외 처리를 처리하는 방법: 종합 안내서

PHP가 오류 및 예외 처리를 처리하는 방법: 종합 안내서

Susan Sarandon
풀어 주다: 2024-12-28 17:14:09
원래의
532명이 탐색했습니다.

How PHP Handles Error and Exception Handling: A Comprehensive Guide

PHP는 오류 및 예외 처리를 어떻게 처리합니까?

PHP에서는 강력하고 안전한 애플리케이션을 유지하려면 오류예외 처리가 필수적입니다. 오류 및 예외를 적절하게 처리하면 애플리케이션이 예측 가능하게 작동하고, 사용자에게 의미 있는 피드백을 제공하고, 디버깅 및 향후 개선을 위한 문제를 기록할 수 있습니다. 이 기사에서는 PHP의 오류와 예외 간의 차이점, PHP가 오류를 처리하는 방법, 오류 및 예외 처리에 대한 모범 사례에 대해 설명합니다.


1. PHP의 오류 처리

PHP의 오류는 프로그램 실행 중에 예상치 못한 동작이 발생하여 스크립트가 종료되는 상황을 의미합니다. PHP는 오류를 처리하고 대응하기 위한 여러 내장 메커니즘을 제공합니다.

오류 유형:

PHP에는 발생할 수 있는 다양한 유형의 오류가 있습니다.

  • 구문 오류(구문 오류): PHP가 스크립트를 구문 분석하는 동안 문제가 발생할 때 발생합니다(예: 세미콜론 누락, 일치하지 않는 괄호).
  • 치명적인 오류: 이러한 오류는 존재하지 않는 메서드에 대한 함수 호출이나 존재하지 않는 파일 포함 등 PHP에서 복구할 수 없는 문제를 발견했을 때 발생합니다.
  • 경고 오류: 경고는 스크립트 실행을 중지하지 않습니다. 이는 존재하지 않는 파일을 포함하는 등 PHP가 복구할 수 있는 문제를 나타냅니다.
  • 알림 오류: 알림은 경고보다 덜 심각합니다. 이는 정의되지 않은 변수와 같은 잠재적인 문제를 나타내지만 스크립트 실행을 중지하지는 않습니다.

오류 보고 수준:

PHP에서는 error_reporting() 함수를 사용하거나 php.ini 파일의 error_reporting 지시문을 설정하여 보고해야 하는 오류 유형을 제어할 수 있습니다.

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all errors, including notices
error_reporting(E_ALL);

// Suppress all errors
error_reporting(0);
로그인 후 복사
로그인 후 복사
로그인 후 복사

가장 일반적인 오류 보고 수준은 다음과 같습니다.

  • E_ERROR: 치명적인 런타임 오류.
  • E_WARNING: 치명적이지 않은 런타임 오류.
  • E_NOTICE: 런타임 알림.
  • E_ALL: 모든 오류, 경고, 공지입니다.

오류 처리:

내장된 PHP 함수를 사용하여 오류를 처리할 수 있습니다.

  • set_error_handler(): PHP 오류가 발생할 때마다 호출되는 사용자 정의 오류 핸들러를 정의합니다.

예:

// Custom error handler function
function customError($errno, $errstr) {
    echo "Error [$errno]: $errstr";
}

// Set custom error handler
set_error_handler("customError", E_WARNING);

// Trigger a warning error
echo $undefined_variable;  // This will call the custom error handler
로그인 후 복사
로그인 후 복사
  • trigger_error(): 사용자 정의 오류를 수동으로 트리거하는 데 사용됩니다.

예:

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all errors, including notices
error_reporting(E_ALL);

// Suppress all errors
error_reporting(0);
로그인 후 복사
로그인 후 복사
로그인 후 복사

2. PHP의 예외 처리

예외는 런타임 오류를 보다 적절하게 처리할 수 있는 메커니즘입니다. 기존 오류와 달리 예외를 사용하면 오류를 포착하고 통제된 방식으로 처리할 수 있습니다.

예외 발생:

throw 키워드를 사용하여 PHP에서 예외를 발생시킬 수 있습니다. 예외가 발생하면 프로그램의 정상적인 흐름이 중단되고 예외를 처리할 수 있는 가장 가까운 catch 블록으로 제어가 전달됩니다.

// Custom error handler function
function customError($errno, $errstr) {
    echo "Error [$errno]: $errstr";
}

// Set custom error handler
set_error_handler("customError", E_WARNING);

// Trigger a warning error
echo $undefined_variable;  // This will call the custom error handler
로그인 후 복사
로그인 후 복사

예외 잡기:

예외를 포착하려면 try-catch 블록을 사용합니다. try 블록에는 예외를 발생시킬 수 있는 코드가 포함되어 있고, catch 블록에는 예외를 처리하는 코드가 포함되어 있습니다.

// Trigger a custom user error
trigger_error("This is a custom error!", E_USER_NOTICE);
로그인 후 복사

예외 개체:

예외가 발생하면 예외 클래스의 개체가 catch 블록으로 전달됩니다. 이 객체에는 다음과 같은 예외에 대한 유용한 정보가 포함되어 있습니다.

  • getMessage(): 오류 메시지를 반환합니다.
  • getCode(): 예외 코드를 반환합니다(제공된 경우).
  • getFile(): 예외가 발생한 파일을 반환합니다.
  • getLine(): 예외가 발생한 줄 번호를 반환합니다.
  • getTrace(): 예외의 스택 추적을 반환합니다.

사용자 정의 예외 클래스:

PHP에 내장된 예외 클래스를 확장하여 사용자 정의 예외 클래스를 정의할 수 있습니다. 이를 통해 다르게 포착하고 처리할 수 있는 보다 구체적인 유형의 예외를 생성할 수 있습니다.

// Throwing an exception
throw new Exception("Something went wrong!");
로그인 후 복사

3. 포착되지 않은 예외

예외가 발생했지만 catch 블록에서 포착되지 않은 경우 PHP는 치명적 오류를 생성하고 예외가 포착되지 않았음을 나타내는 메시지를 표시합니다. 이를 방지하려면 잠재적으로 발생하는 예외에 대한 적절한 try-catch 블록이 코드에 포함되어 있는지 항상 확인하세요.


4. 오류 및 예외 처리 모범 사례

아. 예외에 Try-Catch를 사용하세요:

  • 특히 데이터베이스 오류, 파일 처리 오류 및 네트워크 문제와 같은 시나리오에서 런타임 오류 및 예외 조건을 처리하려면 예외를 사용하세요.
  • try-catch 블록을 사용하여 예외를 포착하고 적절하게 처리합니다(예: 예외 기록, 사용자에게 친숙한 메시지 표시 또는 복구 시도).

ㄴ. 다양한 유형의 오류를 개별적으로 처리:

  • 예상되거나 중요하지 않은 문제(예: 누락된 파일 또는 존재하지 않는 변수)의 경우 set_error_handler()와 함께 오류 처리를 사용하세요.
  • 스크립트를 종료해야 하거나 특별한 처리가 필요한 중요한 문제(예: 데이터베이스 연결 실패)의 경우 예외를 사용하세요.

ㄷ. 오류 및 예외 기록:

  • 디버깅 목적으로 항상 오류 및 예외를 오류 로그 파일에 기록합니다. 이는 최종 사용자에게 자세한 오류를 표시하고 싶지 않은 프로덕션 환경에 특히 중요합니다.

php.ini에 로그인하는 오류의 예:

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all errors, including notices
error_reporting(E_ALL);

// Suppress all errors
error_reporting(0);
로그인 후 복사
로그인 후 복사
로그인 후 복사

디. 사용자에게 친숙한 오류 메시지 표시:

  • 프로덕션에서는 사용자에게 원시 오류 메시지를 표시하지 않아야 합니다. 대신 일반 오류 메시지를 표시하고 개발자를 위한 세부 정보를 기록하세요.

e. 사용자 정의 예외 처리 논리 사용:

  • 일시적인 문제(예: 데이터베이스 연결 실패)에 대한 재시도 논리와 같은 추가 컨텍스트나 동작을 제공하는 사용자 정의 예외 클래스를 생성합니다.

5. PHP 오류 및 예외 처리 흐름

  1. 오류:

    • PHP는 오류 보고 수준에 따라 오류를 확인합니다.
    • 오류가 발생하면(예: 경고 또는 알림) set_error_handler()를 사용하여 설정하면 오류 핸들러가 트리거됩니다.
    • 치명적인 오류나 구문 분석 오류로 인해 스크립트 실행이 중단됩니다.
  2. 예외:

    • try 블록 내에서 예외가 발생하면 PHP는 즉시 일치하는 catch 블록으로 제어를 전송합니다.
    • 일치하는 catch 블록이 없으면 예외가 포착되지 않고 치명적인 오류가 발생합니다.

결론

PHP에서는 오류예외 처리가 모두 애플리케이션이 예상치 못한 상황을 적절하게 처리하는 데 매우 중요합니다. 오류는 일반적으로 구문 오류 및 경고와 같은 즉각적인 문제에 사용되는 반면, 예외는 런타임 문제를 처리하는 보다 강력하고 유연한 방법을 제공합니다. 차이점을 이해하고 올바른 맥락에서 올바른 접근 방식을 사용하면 보다 안정적이고 유지 관리가 쉬운 PHP 애플리케이션을 만들 수 있습니다.


위 내용은 PHP가 오류 및 예외 처리를 처리하는 방법: 종합 안내서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿