关于异常的一个小问题

问题描述

我看到很多人在写dao层的程序的时候,在遇到异常时,catch代码块里都是throw new runtimeexception(); 而不是e.printstackprace(); 这样写有什么好处吗

解决方案

1、throw new runtimeexception() 大多数目的是为了让service层的事务回滚 但是这样抛是不好的 因为默认spring回滚RuntimeExceptionhttp://jinnianshilongnian.iteye.com/blog/14423762、spring为DAO层提供了一致的异常体系(DataAccessException) 因此我们应该在DAO层使用类似的异常往上抛 明确告诉service层出什么问题了http://jinnianshilongnian.iteye.com/blog/16859633、再就是异常的设计了 可以参考之前的问题http://www.iteye.com/problems/94208
解决方案二:
异常处理机制是设计中重要的一部分。具体要看项目的需要:是一遇到异常就终止,异常一直抛到最外面呢;还是遇到异常后记日志,然后继续后续的处理,或者启用另外一套逻辑进行处理;还是遇到异常后记日志,进行一些处理,终止流程,然后在页面提示错误信息给用户;等等。然后还要看异常的类型:是可以完全忽略的异常呢;还是在预计可能的范围内可以忽略;还是不能忽略,必须记录日志,并进行专门处理;还是非常严重,必须记录日志,然后终止流程并进行提示。根据以上两种类型区分,异常会在不同的层进行处理,所以如果dao层遇到异常,但是要由service层处理,就会把异常抛出去。而如果异常不经封装就抛给service层,那么service层就头疼了,要应付各种可能的异常类型,所以dao层会把异常重新封装一下,这样service层只要处理统一的异常。
解决方案三:
这里主要是和事物有关,在dao里抛出异常,然后在 service层里进行捕获,因为在service里有多个dao的方法话,一旦有一个发生异常,service里的dao方法都会回滚的,这就保证了数据的一致性抛出异常runtimeexception,RuntimeException,那么一定是程序存在逻辑错误,要对程序进行修改。还有就是spring默认的异常,就是一旦发生这样的异常,就会自动捕获的。
解决方案四:
因为e.printstackprace();只是输出异常堆栈信息,而上面的service层无法知道下面出现异常了。throw new RuntimeException是一个unchecked 类型的异常,service层可以捕获到,但是不强制必须捕获。如果对异常不清楚,可以参考下面的资料:http://www.iteye.com/topic/72170http://www.cnblogs.com/focusj/archive/2011/12/26/2301524.html

时间: 2024-08-01 02:04:57

关于异常的一个小问题的相关文章

如何打造一个小而精的电商网站架构?

本文大纲: 1. 小型电商网站的架构 2. 日志与监控系统的解决方案 3. 构建数据库的主从架构 4. 基于共享存储的图片服务器架构 5. 移动M站建设 6. 系统容量预估 7. 缓存系统      一.小型电商网站的架构     刚从传统软件行业进入到电商企业时,觉得电商网站没有什么技术含量,也没有什么门槛,都是一些现有的东西堆积木似的堆出来罢了.然而,真正进入到这个行业之后,才发现并非如此.有人说过,好的架构,是演化出来的,电商网站的架构也是如此.现在好的电商网站,看似很复杂,很牛逼,其实也

使用javaEE的SSH框架,做的一个小项目出现了奇怪的问题,请求有经验的前辈搭救!!

问题描述 最近刚做好的一个小项目,在我电脑整正常显示,我把项目直接发给一同学,然后他运行可以,但有些地方显示缺出现了问题,例如基本信息管理里面的查询结果,他有些网页不能完全显示,有的又可以,我想问下,这可能是什么问题?我真的无从下手了,求大神指点.我的正常显示:同学的有些网页缺显示不完全:JSP显示结果的部分代码(java后台那部分代码就是查询出符合的记录,并以CclassList输出):<!--查询结果--><c:iftest="${request.CclassList!=n

c# 反射-C#一个小程序出现NullReferenceException

问题描述 C#一个小程序出现NullReferenceException 刚刚接触反射技术,但并不理解,对着资料打的程序 namespace 反射 { class Program { class User { private int _id; //模拟一个数据库中User的实体 public int ID { get { return _id; } set { _id = value; } } private string _name; public string Name { get { re

遍历-java递归删除目录的一个小问题

问题描述 java递归删除目录的一个小问题 import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.text.SimpleDateFormat; import java.util.Date; public class DeleteFilesDemo { public static void main(String[] args) throws FileNo

程序运行异常 c语言小问题 求助

问题描述 程序运行异常 c语言小问题 求助 想写一个求大数的斐波那契的程序,需要数组来实现进位,然后进位条件那(就是for循环的条件那里)有问题 ,改一下(改成c!=0或改成a[i-1][j]!=0||a[i-2][j]!=0,合起来就不对了)就可以正常运行,想问下现在这样写有什么问题吗? #include #include const int A=10000; int a[1000][10]; int main() { int n,i,j,c,cc; memset(a,0,sizeof(a))

一个小问题讨论下。关于foreach的

问题描述 请编写一个小程序,使用foreach遍历一个DataTable,DataTable中有姓名.年龄.性别等字段,删除年龄小于18岁且性别为男性的记录经过大家的帮助研究出第一种情况DataTabledt;foreach(DataRowdrindt){if(int.Parse(dr["age"].ToString())<18&&dr["sex"].ToString()=="male")dt.Rows.Remove(dr)

电商总结(八)如何打造一个小而精的电商网站架构

前面写过一些电商网站相关的文章,这几天有时间,就把之前写得网站架构相关的文章,总结整理一下.把以前的一些内容就连贯起来,这样也能系统的知道,一个最小的电商平台是怎么一步步搭建起来的.对以前的文章感兴趣的朋友可以看这个,http://www.cnblogs.com/zhangweizhong/category/879056.html   本文大纲: 1. 小型电商网站的架构 2. 日志与监控系统的解决方案 3. 构建数据库的主从架构 4. 基于共享存储的图片服务器架构 5. 移动M站建设 6. 系

前端-用php和mysql为我们实验室建立一个小网站,请问有没有合适的模板源码?

问题描述 用php和mysql为我们实验室建立一个小网站,请问有没有合适的模板源码? 自己在chinaz上下载了几个,但是不尽人意,希望有路过的朋友能够提供帮助,只有建立一个链接数据库的小网站,不用线上上运行,所以模板不用太复杂,前端有了就好,谢谢 解决方案 你应该说明网站用途,根据用途可以决定里的要用什么,只链接数据库使用phpadmin就好 解决方案二: 这样谁说你更想要的是前端的页面

js浏览器-javascript中的一个小问题(浏览器问题)

问题描述 javascript中的一个小问题(浏览器问题) 求助 javascript中的一个小问题< html> <head> <title>Ajax 简单的服务器请求 <script type=""text/javascript""> var xmlobj; function CreateXMLHttpRequest() { if(window.ActiveXObject) //如果当前浏览器支持ActiveXOb