do while break 用法

本文详细介绍了如何设计并实现一个视频评论的API接口,包括对用户身份验证、视频ID校验、评论内容检查等核心功能。通过使用do...while(false)+break结构模拟goto语句,确保了代码的高效跳转。同时,对可能出现的各种错误情况进行了全面的异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

do while break

do while(false) + break 可以模拟 goto语句,遇到break直接跳转。

@RequestMapping ("/add")
    @ResponseBody
    @Override
    public Map<String, Serializable> addComment(Comment comment, String token) {
        Map<String, Serializable> result = new HashMap<>();
        result.put("status", "failure");
        try {
            do {
                Token tokenCheck = TokenUtil.checkToken(token, TokenUtil.TokenUssage.DEFAULT);
                User user = userService.findUserById(tokenCheck.getUserId());
                if (user == null) {
                    throw new TokenUtil.TokenNotFound("用户不存在");
                }
                if (comment.getVideoId() == null) {
                    result.put("msg", "视频 id 为空");
                    break;
                } else {
                    Video video = videoService.findVideoById(comment.getVideoId());
                    if (video == null) {
                        result.put("msg", "视频 id 不正确");
                        break;
                    }
                }
                if (comment.getContent() == null) {
                    result.put("msg", "评论内容为空");
                    break;
                } else if (comment.getContent().length() == 0 || comment.getContent().length() > 250) {
                    result.put("msg", "评论内容为空或超过250长度限制");
                    break;
                }
                comment.setUserId(user.getId());
                comment.setId(null);
                comment.setSendtime(ZonedDateTime.now());
                comment.setCountLike(0);
                try {
                    commentService.addComment(comment);
                    result.put("status", "success");
                } catch (Exception e) {
                    result.put("msg", "未知错误");
                }
            } while (false);
        } catch (TokenUtil.TokenExpired | TokenUtil.TokenNotFound | TokenUtil.TokenOverAuthed | TokenUtil.TokenUssageNotMatched tokenError) {
            result.put("msg", tokenError.getMessage());
        }
        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值