DAO层处理处理异常?
在一本书上的例子里,它的dao层是抛出异常的,为什么呢?我查大多数DAO例子里都不抛异常的,不抛又是为什么呢?还有,在实际开发中是怎样处理异常的呢?...
在一本书上的例子里,它的dao层是抛出异常的,为什么呢?我查大多数DAO例子里都不抛异常的,不抛又是为什么呢?还有,在实际开发中是怎样处理异常的呢?
展开
1个回答
展开全部
Java的异常(Exception)分为两类:运行时异常(runtime exception)和非运行时异常(checked exception)。
非运行时异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。
但是另外一种异常:运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。
如果抛异常(一般是非运行时异常)的话,那么上层调用就必须对异常进行处理(try...catch...),如果不处理(继续throws),最终将有虚拟机处理这些异常。
我个人认为,手动抛异常可以使代码变得更清晰。比如,向数据库添加一个用户,如果该用户存在,则手动抛出一个自定义的UserExistedException,这样比系统自己抛出一个Sql异常更直观一些。
如果能保证代码的正确性,抛不抛异常都无所谓。
非运行时异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。
但是另外一种异常:运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。
如果抛异常(一般是非运行时异常)的话,那么上层调用就必须对异常进行处理(try...catch...),如果不处理(继续throws),最终将有虚拟机处理这些异常。
我个人认为,手动抛异常可以使代码变得更清晰。比如,向数据库添加一个用户,如果该用户存在,则手动抛出一个自定义的UserExistedException,这样比系统自己抛出一个Sql异常更直观一些。
如果能保证代码的正确性,抛不抛异常都无所谓。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应
|
问题解决率99%
|
24小时在线
立即免费咨询律师
12670人正在获得一对一解答
苏州天空之城3分钟前提交了问题
武汉草原风1分钟前提交了问题
西安夜猫子4分钟前提交了问题