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

PHP 8의 비캡처 예외 캐치(Non-Capturing Catch), 어떻게 작동할까?

PHP 8 이전 버전에서는 예외(exception)를 처리하려면 반드시 해당 예외를 변수에 담아야 했습니다. 심지어 그 변수를 실제로 사용하지 않더라도 말이죠.

즉, PHP 8 이전에는 try 블록에서 던져진(throw된) 예외를 catch 블록에서 처리하려면 항상 변수에 캡처하는 것이 필수였습니다.

예제: PHP에서 예외를 변수로 캡처하는 기존 방식

<?php
    function foo()
    {
        try {
            throw new Exception('Hello');
        }
        catch (Exception $e) {
            return $e->getMessage();
        }
    }
?>

설명: 위 코드에서는 catch 블록이 발생한 예외를 $e 변수에 캡처하고 있습니다. 이 $e 변수는 예외 메시지(message), 코드(code) 등 예외와 관련된 다양한 정보를 담을 수 있습니다.

PHP 8의 새로운 변화: 비캡처 캐치

PHP 8에서는 비캡처 캐치(non-capturing catches) 문법이 새롭게 도입되었습니다. 이제는 예외를 변수에 담지 않고도 곧바로 캐치하여 처리할 수 있습니다. 즉, 사용하지 않을 변수를 생략할 수 있게 된 것입니다.

예제: PHP 8에서 변수 없이 예외 캐치하기

<?php
    try {
        throw new Exception('hello');
    }
    catch (Exception) { // $e 변수 생략됨
    }
?>

참고: 위 코드에서는 예외 정보를 담기 위한 $e 변수를 사용하지 않습니다. 예외 유형만 확인하면 되는 상황이라면 이처럼 변수 없이 간결하게 작성할 수 있습니다.

이러한 비캡처 캐치 문법은 코드를 더 깔끔하게 만들어 주며, 불필요한 변수 선언으로 인한 가독성 저하를 방지할 수 있다는 장점이 있습니다.