某草草2017-06-28 09:23:37 0 4 581
[MySQL讨论组]举报回复话题 ↕
求教,线上应用,如果数据库操作(insert,update,delete)失败的话,处理逻辑应该是如何?
将错误返回给用户?
不做处理?
在执行一次?
还是?
4
0
分享
给我你的怀抱 2017-06-28 09:25:374楼
操作失败正常返回就行了 ,返回操作失败的错误码,比如
success:false, message:更新/删除失败
但是作为开发有一个原则就是,失败的具体信息不能输出到用户操作界面,
打个比方,你更新一条数据,更新失败,是由于数据库连接失败,数据库挂了之类的,你不可能把错误信息输出到用户端,告诉用户数据库连接失败吧
如果是sql报错,这属于应用错误了,一定要捕获异常,将异常记录在日志里
sql的相关操作一定要用try{}catch(){} 千万不能把异常流到上游,并且上游没有做对异常处理的相关操作
批量操作一定要做好事务,
赞 +0添加回复
大家讲道理 2017-06-28 09:25:373楼
当然是找出所有捕获到异常比如昵称唯一,密码不正确等等 其他的就返回未知异常,不要暴露自己的异常信息.
三叔 2017-06-28 09:25:372楼
根据错误码给用户返回信息吧,再执行一次不建议,因为对数据库来说可能会造成脏数据
迷茫 2017-06-28 09:25:371楼
现场还原:数据回滚至操作前。重不重试分场景,通用的原则是同步不重试,异步重试
异常处理:同步:异常包装成可读的错误信息给用户,提醒用户重试。异步:监控异常信息
给我你的怀抱 2017-06-28 09:25:374楼
操作失败正常返回就行了 ,返回操作失败的错误码,比如
但是作为开发有一个原则就是,失败的具体信息不能输出到用户操作界面,
打个比方,你更新一条数据,更新失败,是由于数据库连接失败,数据库挂了之类的,你不可能把错误信息输出到用户端,告诉用户数据库连接失败吧
如果是sql报错,这属于应用错误了,一定要捕获异常,将异常记录在日志里
sql的相关操作一定要用try{}catch(){} 千万不能把异常流到上游,并且上游没有做对异常处理的相关操作
批量操作一定要做好事务,
赞 +0添加回复
大家讲道理 2017-06-28 09:25:373楼
当然是找出所有捕获到异常比如昵称唯一,密码不正确等等
其他的就返回未知异常,不要暴露自己的异常信息.
赞 +0添加回复
三叔 2017-06-28 09:25:372楼
根据错误码给用户返回信息吧,再执行一次不建议,因为对数据库来说可能会造成脏数据
赞 +0添加回复
迷茫 2017-06-28 09:25:371楼
现场还原:数据回滚至操作前。重不重试分场景,通用的原则是同步不重试,异步重试
异常处理:同步:异常包装成可读的错误信息给用户,提醒用户重试。异步:监控异常信息
赞 +0添加回复