Topic: DAO接口函数是否应该抛出SQLException ? |
Print this page |
1.DAO接口函数是否应该抛出SQLException ? | Copy to clipboard |
Posted by: cknight Posted on: 2003-12-19 22:11 DAO接口函数是否应该抛出SQLException ? 我以前的做法都是抛出SQLException, 现在又想了想,觉得SQLException都是客户端、DAO调用者所无法解决的异常, 应该说都是底层程序错误的异常。 看到一篇文章中说 客户端无法解决 按理应该抛出unchecked异常 即 public void dataAccessCode(){ try{ ..some code that throws SQLException }catch(SQLException ex){ throw new RuntimeException(ex); } } 这样可以避免让客户端强制处理这些底层异常。 请问个位,你们的DAO是否都只是抛出自己定义的checked异常呢? |
2.Re:DAO接口函数是否应该抛出SQLException ? [Re: cknight] | Copy to clipboard |
Posted by: floater Posted on: 2003-12-19 23:06 No. Yes. Good thinking. |
3.Re:DAO接口函数是否应该抛出SQLException ? [Re: cknight] | Copy to clipboard |
Posted by: why Posted on: 2003-12-19 23:29 cknight wrote: To be honest, I'm not 100% sure why not. but Yes, 只是抛出自己定义的checked异常 |
4.Re:DAO接口函数是否应该抛出SQLException ? [Re: cknight] | Copy to clipboard |
Posted by: jbwang Posted on: 2003-12-20 15:29 最接近客户端的抛出业务异常, 最接近底层的抛出原有异常 或者 contract 契约编程,是这么写的吧? |
5.Re:DAO接口函数是否应该抛出SQLException ? [Re: cknight] | Copy to clipboard |
Posted by: javait Posted on: 2003-12-20 23:51 这是困扰许多人的问题。 答案是: DAO 抛出异常的原则: 1。DAO 方法应该抛出有意义的异常。 2。DAO 方法不应该抛出 java.lang.Exception。java.lang.Exception 太一般化了。它不传递关于底层问题的任何信息。 3。DAO 方法不应该抛出 java.sql.SQLException。SQLException 是一个低级别的 JDBC 异常。一个 DAO 应该力争封装 JDBC 而不是将 JDBC 公开给应用程序的其余部分。 4。只有在可以合理地预期调用者可以处理异常时,DAO 接口中的方法才应该抛出检查过的异常。如果调用者不能以有意义的方式处理这个异常,那么考虑抛出一个未检查的(运行时)异常。 5。如果数据访问代码捕获了一个异常,不要忽略它。忽略捕获的异常的 DAO 是很难进行故障诊断的。 6。使用链接的异常将低级别的异常转化为高级别的异常。 7。考虑定义标准 DAO 异常类。Spring Framework (参阅参考资料)提供了很好的一套预定义的 DAO 异常类。 详见我的帖子 http://www.cjsdn.com/post/view?bid=2&id=71505&sty=1&tpg=2&age=0 谢谢! -JAVAIT |
6.Re:DAO接口函数是否应该抛出SQLException ? [Re: cknight] | Copy to clipboard |
Posted by: cknight Posted on: 2003-12-21 02:14 嗯,对,有道理。原来抛出的SQLException使得调用者必须捕获这个异常。 实际上这样的捕获对于调用者是无能为力,也是没有多大意义的。 同时这样也使得他们之间形成了紧耦合,确实不好。 谢谢javait 的文章, |
7.Re:DAO接口函数是否应该抛出SQLException ? [Re: cknight] | Copy to clipboard |
Posted by: cknight Posted on: 2003-12-21 04:55 关于异常处理,也看到一篇不错的文章,推荐一下 Best Practices for Exception Handling http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html |
8.Re:DAO接口函数是否应该抛出SQLException ? [Re: cknight] | Copy to clipboard |
Posted by: hitaco Posted on: 2003-12-22 10:08 DAO未必一定要用relational数据库实现,所以SQLException.... |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |