
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