IMCAT.DEV
로그인 가입
PHP 입문 문법

PHP 기본 오류 처리

PHP 기본 오류 처리 — 초급

PHP 기본 오류 처리

1. 도입 (왜 배워야 하는가)

PHP에서 오류 처리는 매우 중요한 개념입니다. 실제로 웹 애플리케이션을 개발할 때는 예상치 못한 오류가 발생할 수 있으며, 이러한 오류를 적절히 처리하지 않으면 사용자에게 불편을 초래하거나, 시스템이 예기치 않게 종료될 수 있습니다. 예를 들어, 쇼핑몰 웹사이트에서 결제 과정 중 오류가 발생하면 사용자는 결제를 완료하지 못하고, 이는 매출 손실로 이어질 수 있습니다.

오류 처리를 배우지 않으면, 개발 중 발생하는 오류를 추적하고 수정하기 어렵고, 안정적인 애플리케이션을 만드는 데 큰 어려움을 겪게 됩니다. 또한, 보안 측면에서도 중요합니다. 오류 메시지가 외부에 노출되면, 해커에게 시스템의 구조를 알려주는 단서가 될 수 있습니다.

2. 핵심 개념 설명

2.1 오류(Error)

오류는 프로그램 실행 중 발생하는 문제로, 코드의 문법적 또는 논리적 오류로 인해 발생합니다. 예를 들어, 변수에 잘못된 값을 할당하거나, 존재하지 않는 파일을 열려고 시도하는 경우가 있습니다.

2.2 예외(Exception)

예외는 오류보다 좀 더 구체적인 개념으로, 특정 상황에서 발생하는 오류를 나타냅니다. 예를 들어, 데이터베이스 연결이 실패했을 때 발생하는 예외가 이에 해당합니다.

용어설명
오류(Error)일반적인 프로그램 실행 중 발생하는 문제
예외(Exception)특정 상황에서 발생하는 오류

3. 기본 코드 예제

아래는 PHP에서 기본적인 오류 처리를 위한 코드 예제입니다.

<?php
// 오류 수준을 설정합니다.
error_reporting(E_ALL); // 모든 오류 및 경고를 표시
ini_set('display_errors', 1); // 오류를 화면에 표시

// 잘못된 파일을 열려고 시도합니다.
$file = 'non_existent_file.txt';
$content = file_get_contents($file); // 오류 발생

echo $content; // 이 코드는 실행되지 않습니다.
?>

실행 결과

Warning: file_get_contents(non_existent_file.txt): failed to open stream: No such file or directory in ...

코드 한 줄씩 동작 설명

  1. error_reporting(E_ALL);: 모든 오류 및 경고를 보고하도록 설정합니다. 이 설정은 개발 중 모든 문제를 빠르게 확인할 수 있게 도와줍니다.
  2. ini_set('display_errors', 1);: 오류 메시지를 화면에 표시하도록 설정합니다. 이는 디버깅에 유용하지만, 실제 운영 환경에서는 꺼두는 것이 좋습니다.
  3. $file = 'non_existent_file.txt';: 존재하지 않는 파일 이름을 변수에 저장합니다.
  4. $content = file_get_contents($file);: 파일 내용을 읽어오려고 시도하지만, 파일이 존재하지 않으므로 오류가 발생합니다.
  5. echo $content;: 파일을 성공적으로 읽지 못했기 때문에 이 코드는 실행되지 않습니다.
  6. 4. 실전 활용 예제

    예제 1: 사용자 입력 검증

    사용자가 입력한 이메일 주소가 올바른 형식인지 확인하고, 올바르지 않으면 예외를 발생시키는 예제입니다.

    <?php
    function validateEmail($email) {
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            throw new Exception("유효하지 않은 이메일 주소입니다.");
        }
        return true;
    }
    
    try {
        validateEmail("invalid-email"); // 잘못된 입력
    } catch (Exception $e) {
        echo $e->getMessage(); // 예외 메시지 출력
    }
    ?>

    예제 2: 데이터베이스 연결

    데이터베이스에 연결할 때 오류가 발생하는 경우를 처리하는 예제입니다.

    <?php
    $servername = "localhost";
    $username = "root";
    $password = "wrong_password"; // 잘못된 비밀번호
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
        // 설정 에러 모드
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "연결 성공"; 
    } catch (PDOException $e) {
        echo "연결 실패: " . $e->getMessage(); // 오류 메시지 출력
    }
    ?>

    5. 흔한 실수와 주의사항

    실수 1: 오류 메시지를 사용자에게 그대로 노출하기

    • 잘못된 코드:
    • ini_set('display_errors', 1); // 운영 환경에서 사용하면 위험
    • 올바른 코드:
    • ini_set('display_errors', 0); // 운영 환경에서는 꺼둔다
    • 설명: 사용자에게 오류 메시지를 그대로 노출하면 보안에 취약해질 수 있습니다.
    • 실수 2: 예외를 무시하기

    • 잘못된 코드:
    • try {
          // 예외 발생 가능 코드
      } catch (Exception $e) {
          // 아무것도 하지 않음
      }
    • 올바른 코드:
    • try {
          // 예외 발생 가능 코드
      } catch (Exception $e) {
          logError($e->getMessage()); // 오류를 로깅
      }
    • 설명: 예외를 무시하면 문제를 해결할 기회를 놓칠 수 있습니다.
    • 6. 정리

    • PHP에서 오류 처리는 웹 애플리케이션의 안정성과 보안을 위해 필수적입니다.
    • 오류와 예외의 차이를 이해하고 적절히 처리하는 것이 중요합니다.
    • 오류 메시지를 사용자에게 노출하지 않도록 주의해야 합니다.
    • 예외 처리를 통해 잠재적인 문제를 사전에 예방할 수 있습니다.

다음에 학습하면 좋은 주제는 PHP의 로깅 기법입니다. 로깅을 통해 오류를 기록하고, 시스템 성능을 분석하는 방법을 배울 수 있습니다.