点赞功能与异常捕获处理-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

点赞功能与异常捕获处理

2016-02-18 16:24:05 2290 1

最近一直做一个关于"点赞"功能的服务器端(整个服务器功能的一个小部分),基本的需求主要是这样的:
用户发表了一个状态,浏览者可以点赞,但是点赞只能点一次.如果浏览者点了第二次,客户端就说"您已经点过一次赞了哟".
mysql的sql语句是这样做的:

create  table status_footprint_db(
    sid int unsigned  not null,
    uid int unsigned not null,
    like_this varchar(1)    check   ( like_this in('0','1')),  
    primary key(aid,uid,like_this),
     
    foreign key(sid) references status_db(sid) on delete cascade on update cascade
 );

现在问题来了.如何做到判断用户是否点赞呢?
有两种做法,第一种做法是在用户点赞的时候,先查询一下,如果说点过赞了,就直接返回.如果说没有点赞,就插入点赞.
第二种做法是直接插入,因为向上面的数据库表,元组是不允许一样的,这样在插入数据,如果已经点赞了.mysql就会不允许插入.excuteupdate就会返回0,这样就表示已经点过赞了.
其实我更想说的是第二种情况所引申出来的情况.excuteupdate等于0可能是多种情况,不一定"我已经点过赞"的原因.也有可能是like_this不是0或者1.这样,本来我没有点赞,但是客户端还是告诉我"您已经点过赞了".有没有这样一种方法:
根据具体的异常来返回给客户端不同的值?
比如陌陌就经常出现这种情况:更新个人资料的时候,有时候是更新成功了的.但是客户端还是给你说:更新失败,请检查连接.
接着陌陌的问题.假设用户在更新数据的时候,服务器出于某种原因,会报出两个异常:
一个是sql异常.说明数据库中间没有插入你的数据,客户端说"数据插入失败,重试一下".
另外一个是其他的一个异常,但是数据库中间已经保存了你的数据.,客户端说"服务器发生未知错误,但是您的数据已经更新成功"
对于点赞的问题:根据不同的异常返回两个值:
1.您已经点过赞了
2.点赞失败..服务器出现了某种错误.
以前我处理异常就是try catch throw finally,只要出现异常,就给客户端返回"一个服务器错误"的提示.客户端发现有这句话"就提醒"更新失败,请重试".于是用户们就重试了一下.结果就出现跟陌陌差不多的错误,数据库更新成功了.由于用户不断重试,表里面有很多重复的数据.
还是老问题啊!这么多异常,如和根据异常向客户端返回不同的值呢?是不是getCause.equals什么异常么?

取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 18:44:08

    当点击“赞”时候,服务器就判断下是否有这条记录就行。也就是你的第一种做法,第二种做法有些复杂。

    0 0
相关问答

18

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1049793浏览量 回答数 18

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157778浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 337126浏览量 回答数 8

38

回答

[@饭娱咖啡][¥20]对于慢sql有没有什么比较实用的诊断和处理方法?

江小白太白 2018-10-30 18:47:38 142149浏览量 回答数 38

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147290浏览量 回答数 22

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 129275浏览量 回答数 2

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 259924浏览量 回答数 38

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192668浏览量 回答数 21

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 305727浏览量 回答数 249

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204443浏览量 回答数 2
+关注
落地花开啦
喜欢技术,喜欢努力的人
0
文章
7824
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载