免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kernel.org
打印 上一主题 下一主题

请问.Jsp连接数据库sqlserver中的插入异常如何解决. [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-03-20 21:36 |只看该作者
原帖由 tinywind 于 2006-3-20 15:18 发表
那你在catch段中判断异常的类型,如果是主键重复错误就提示用户
忽略就更简单了,catch中什么都不做就可以了


这种业务不应该用异常来处理

论坛徽章:
0
12 [报告]
发表于 2006-03-21 01:25 |只看该作者
说到这里我有些疑惑
理论上来讲这样的异常不应该被抛出和捕获,而是应该通过正常编码来检测数据库中是否有相同主键值,然后避免产生这样的异常也就是不插入数据直接告诉用户有相同记录
if(已有相同的主键值)
  return “有了”;
else
  return “没有”;
这样子,而不应该是try{}catch(){“有了”;}这样来搞

可是ServletException又是规定可以抛出的异常。。。这很让我怀疑例如SQLException 和 ServletException这样的异常类是不是都应该设计成两个

论坛徽章:
0
13 [报告]
发表于 2006-03-21 02:44 |只看该作者
原帖由 艾斯尼勒 于 2006-3-21 01:25 发表
说到这里我有些疑惑
理论上来讲这样的异常不应该被抛出和捕获,而是应该通过正常编码来检测数据库中是否有相同主键值,然后避免产生这样的异常也就是不插入数据直接告诉用户有相同记录
if(已有相同的主键值)
...


SQLException 不止是相同键值吧。。。。。。。。。很多呢。。。。。。

但一般是设计成先查询的,这种方式速度快还是怎么,没测试过。。。

抛ServletException ? container 还要捕捉呢,做出响应的处理,不然怎么保证健壮性。。。。

论坛徽章:
0
14 [报告]
发表于 2006-03-21 09:23 |只看该作者
这没有规定一定要先读再写的,举个例子来说如果90%的写入操作不会发生重复主键错误,那先写再判断就可以减少io,提高效率。

论坛徽章:
0
15 [报告]
发表于 2006-03-21 10:09 |只看该作者
原帖由 tinywind 于 2006-3-21 10:23 发表
这没有规定一定要先读再写的,举个例子来说如果90%的写入操作不会发生重复主键错误,那先写再判断就可以减少io,提高效率。


业务逻辑一般很少放在异常中处理,java或者说oo本身就不是像c,过程语言那样追求简单代码,复杂逻辑;

很多时候逻辑清晰,代码的健壮性才能保证,这比起微不足道的速度上损失要重要得多。

论坛徽章:
0
16 [报告]
发表于 2006-03-21 10:25 |只看该作者
首先这两种处理方式和oo非oo扯不上关系,其次直接写代码简洁,另一方面也就保证了代码的清晰和健壮,性能也好,我看不出有什么理由反对。

说到性能,我比较赞成一位前辈的话,“java在性能方面名声并不好,所以java程序员应该更关注性能。”

论坛徽章:
0
17 [报告]
发表于 2006-03-21 10:43 |只看该作者
嗯嗯,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP