feat[net]:add exception handler

This commit is contained in:
luca
2024-05-16 18:35:18 +08:00
parent 0f54f79351
commit 14e7aedbf1
@@ -370,16 +370,29 @@ public class Router implements IRouter {
receiver.invoke(session, packet, attachment);
} catch (Exception e) {
EventBus.post(ServerExceptionEvent.valueOf(session, packet, attachment, e));
logger.error("at{} e[uid:{}][sid:{}] invoke exception", StringUtils.capitalize(packet.getClass().getSimpleName()), session.getUid(), session.getSid(), e);
exceptionHandler(e, packetReceiverTask);
} catch (Throwable t) {
logger.error("at{} e[uid:{}][sid:{}] invoke error", StringUtils.capitalize(packet.getClass().getSimpleName()), session.getUid(), session.getSid(), t);
throwableHandler(t, packetReceiverTask);
} finally {
// 如果有服务器在处理同步或者异步消息的时候由于错误没有返回给客户端消息,则可能会残留serverAttachment,所以先移除
serverReceiverAttachmentThreadLocal.set(null);
}
}
protected void exceptionHandler(Exception e, PacketReceiverTask packetReceiverTask){
var session = packetReceiverTask.getSession();
var packet = packetReceiverTask.getPacket();
var attachment = packetReceiverTask.getAttachment();
EventBus.post(ServerExceptionEvent.valueOf(session, packet, attachment, e));
logger.error("at{} e[uid:{}][sid:{}] invoke exception", StringUtils.capitalize(packet.getClass().getSimpleName()), session.getUid(), session.getSid(), e);
}
protected void throwableHandler(Throwable t, PacketReceiverTask packetReceiverTask){
var session = packetReceiverTask.getSession();
var packet = packetReceiverTask.getPacket();
logger.error("at{} e[uid:{}][sid:{}] invoke error", StringUtils.capitalize(packet.getClass().getSimpleName()), session.getUid(), session.getSid(), t);
}
@Override
public void registerPacketReceiverDefinition(Object bean) {