mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-15 10:15:59 +00:00
feat[net]:add exception handler
This commit is contained in:
1 parent
0f54f79351
commit
14e7aedbf1
1 file changed
+16
-3
@@ -370,16 +370,29 @@ public class Router implements IRouter {
|
|||||||
|
|
||||||
receiver.invoke(session, packet, attachment);
|
receiver.invoke(session, packet, attachment);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
EventBus.post(ServerExceptionEvent.valueOf(session, packet, attachment, e));
|
exceptionHandler(e, packetReceiverTask);
|
||||||
logger.error("at{} e[uid:{}][sid:{}] invoke exception", StringUtils.capitalize(packet.getClass().getSimpleName()), session.getUid(), session.getSid(), e);
|
|
||||||
} catch (Throwable t) {
|
} 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 {
|
} finally {
|
||||||
// 如果有服务器在处理同步或者异步消息的时候由于错误没有返回给客户端消息,则可能会残留serverAttachment,所以先移除
|
// 如果有服务器在处理同步或者异步消息的时候由于错误没有返回给客户端消息,则可能会残留serverAttachment,所以先移除
|
||||||
serverReceiverAttachmentThreadLocal.set(null);
|
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
|
@Override
|
||||||
public void registerPacketReceiverDefinition(Object bean) {
|
public void registerPacketReceiverDefinition(Object bean) {
|
||||||
|
|||||||
Reference in new issue
Block a user