
	                	                 
swoole_event_defer를 사용하여 함수를 호출한 후 예외가 발생하는 경우 deferred 함수가 실행되지 않습니다. 이 경우를 예외 처리하는 방법은 두 가지가 있습니다.
1.  try-catch 문을 사용하여 예외를 처리합니다.
    
#hostingforum.kr
php
$serv->on('receive', function($serv, $fd, $from_id, $data) {
    try {
        $serv->defer(function() use ($serv, $fd) {
            // deferred 함수
            $serv->send($fd, "Deferred function executed.");
        });
        // 예외 발생
        $serv->send($fd, "Error: " . $data);
    } catch (Exception $e) {
        // 예외 처리 코드
        $serv->send($fd, "Error: " . $e->getMessage());
    }
});
2. deferred 함수 내에서 try-catch 문을 사용하여 예외를 처리합니다.
#hostingforum.kr
php
$serv->on('receive', function($serv, $fd, $from_id, $data) {
    $serv->defer(function() use ($serv, $fd) {
        try {
            // deferred 함수
            $serv->send($fd, "Deferred function executed.");
        } catch (Exception $e) {
            // 예외 처리 코드
            $serv->send($fd, "Error: " . $e->getMessage());
        }
    });
    // 예외 발생
    $serv->send($fd, "Error: " . $data);
});
위의 방법 중 하나를 사용하여 deferred 함수가 예외를 처리할 수 있도록 코드를 수정하면 deferred 함수가 예외가 발생하더라도 실행될 수 있습니다.
2025-05-15 23:34