netty 异常对象传递
自定义对象
DivideRequest
@Data
public class DivideRequest implements Serializable {
private Integer dividend; //被除数
private Integer divisor; //除数
}
DivideResponse
@Data
public class DivideResponse implements Serializable {
private Integer dividend;
private Integer divisor;
private Double result; //正常处理结果
private Boolean hasError; //在响应中标识是否有异常
private String errorMessage; //如果有异常,返回响应信息
}
服务端
CustomServerHandler
public class CustomServerHandler extends SimpleChannelInboundHandler<DivideRequest> {
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, DivideRequest divideRequest) throws Exception {
System.out.println("服务端收到客户端的数据:"+divideRequest);
DivideResponse response = new DivideResponse();
response.setDividend(divideRequest.getDividend());
response.setDivisor(divideRequest.getDivisor());
if (divideRequest.getDivisor().equals(0)){
response.setHasError(true);
response.setErrorMessage("除数不能等于0");
}else{
response.setHasError(false);
response.setResult(1.0*divideRequest.getDividend()/divideRequest.getDivisor());
}
channelHandlerContext.channel().writeAndFlush(response);
}
}
NettyServer
public class NettyServer {
public static void startServer(int port){
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap serve