-
关于Exception的使用5
今天和同事探讨了关于一个操作db的DAO方法deletexxbyID.
他们的想法是delete成功,返回一个true,delete不成功,返回false.
但是我觉得成功就什么不返回,失败了,如果是sql的问题,就抛出sqlexception,如果是没有该id之类的问题,就该抛一个的继承了businessException的noSuchIDException之类的异常.
同事说我滥用异常,我倒觉得这样清晰些,以后出现更多的业务上的错误也可以通过异常来传递和处理.
这里想问问大家异常到底是怎么个使用方式,尤其是在处理业务方面的时候.到底该不该用异常.
谢了先
问题补充:翻出了个03年Robbin的帖子.更加坚定了我的想法.返回true或false或null,只不过把c语言里的0,1,2,3这种错误从数字变成字符串.我觉得这不利于面向对象.
http://www.iteye.com/topic/20382011年3月10日 12:29
8个答案 按时间排序 按投票排序
-
我也觉得楼主的想法是完全合理的。
抛了异常就不需要返回值了。
我以前也喜欢返回值,后来慢慢的体会到这样做不好,抛异常好,上层的逻辑清楚。
既抛异常又有返回值这种做法也不好,这要我上层的程序怎么判断呢,到底是根据返回值还是异常来判断失败呢,异常了有可能返回的就是Null,上层代码更乱。
我赞成没有返回值,抛异常2011年3月10日 14:47
-
你还真是不听劝解... 那你慢慢的丢异常呗
汗...
异常流在你这种基础上使用不是个明智的选择.. 一般太固执的人做程序员也不是个明智的选择.....2011年3月10日 14:39
-
说多无用,抛异常是正解!!!
项目发布工作看什么?看日志。异常写入日志,一目了然。只要你有经验的就明白这个道理。
true Or false ,不用说了吧。2011年3月10日 14:00
-
其实不用异常也是可以,因为在大多数情况下,调用DAO的层并不需要知道,DAO的错误详细信息。如果你用异常来做错误处理,则runtimeException,你也要进行处理
2011年3月10日 13:53
-
你这个业务还是不要用异常.. 确实滥用了
如果说你担心sql会有注入危险 你可以毫不客气的使用异常机制
对于你正常的业务, 比如你删除的id不存在之类属于业务正常范围之内
当然需要尽量使用友好界面的方式来做.
异常应该出现在未知 或 不正常范围的业务,
所以很多非空的情况是需要去判断 而不是让它抛NullPointException异常出来
2011年3月10日 13:11
-
首先你的异常这个做法是没错的!
我们项目很多地方都这么干的!
但是 返回值 最好是有的!(得考虑后续的处理啊! 并且返回一个 true、 或者 false 也无妨啊!)2011年3月10日 13:03
-
楼上说的层层上抛是正确的。关键在于你的业务,你对抛出的异常怎么处理。如果前段只关注有没有成功就在DAO里面捕获一切异常,返回false就可以了,写太多的异常反而变得累赘,且有性能损耗(这里不研究损耗性能多少)。
2011年3月10日 13:02
-
我比较赞成你的做法,这样清晰。你同事的做法会使业务逻辑中多了很多判断DB操作是否成功,业务逻辑就更复杂了。
我一般的做法是异常层层上抛,到了最上层统一处理,这样避免在代码中到处都是异常处理,处理完了上一层还要再判断。2011年3月10日 12:48
相关推荐
- **使用合适类型的异常**:对于可预见的情况使用 `RuntimeException`,对于不可预见但需要处理的情况使用 `Exception`。 - **记录异常**:在生产环境中,捕获到异常后应记录日志,便于后期分析问题。 通过上述分析...
"Exception C++ & More Exception C++"可能是指两本关于深入理解和应用C++异常处理机制的书籍,其中包含"More Exceptional C++.chm"和"Exceptional C++.chm"这两个章节或部分。 异常处理是C++中的一个核心特性,它...
使用ExceptionApp通常从定义一个简单的Exception-Block开始,这个块包含try、catch以及可能的finally语句,使得异常处理结构清晰明了。 【Root Exception-Block】 Root Exception-Block是整个程序的顶级异常处理...
相反,`Exception`应该被广泛使用,以处理程序运行中的预期问题。 了解这些区别后,我们可以更好地设计和实现错误处理策略。在编写代码时,应该尽量预见并处理可能的`Exception`,而对于`Error`,我们应该做好日志...
"ExceptionEx"是一个自定义的异常基类,设计用于提供更丰富的异常信息,特别是关于源代码位置的信息。这个基类通常是为了扩展C++标准库中的`std::exception`,增加额外的功能,比如包含抛出异常时的行号、文件名或者...
综上所述,“Uncaught DOMException:”错误是JavaScript编程中常见的一个问题,通过理解DOM工作原理、检查代码、使用开发者工具和学习最佳实践,我们可以有效地诊断和修复这类问题。对于那些经常进行前端开发的人员...
- 示例:`ArithmeticException`(数学运算异常,如除以零)、`NullPointerException`(空指针异常)、`ArrayIndexOutOfBoundsException`(数组索引越界异常)、`ClassCastException`(类型转换异常)等。...
这就是“JAVA 自定义异常 Exception”所涉及的内容。 自定义异常是在Java中通过继承`java.lang.Throwable`或其子类(如`Exception`或`Error`)来实现的。通常,我们选择继承`Exception`类,因为它用于表示程序可以...
### 关于Unhandled event loop exception No more handles的两种解决方案 在使用Eclipse开发工具的过程中,有时会遇到一个较为棘刺的问题——出现“Unhandled event loop exception No more handles”的错误提示。...
通常我们使用`try-catch`语句来处理可能发生的异常情况。而在Java中,所有异常类都继承自`Throwable`类,其中`Exception`和`Error`是两个重要的子类。本文将详细介绍捕获`Throwable`和捕获`Exception`的区别,并通过...
当我们使用Eclipse运行TOMCAT时,可能会出现"a java exception has occurred"的错误信息,本文将介绍解决该问题的办法。 一、双击TOMCAT SERVER出现"a java exception has occurred"的原因 当我们在Eclipse中双击...
通过使用ExceptionLog这样的工具,开发者可以在软件开发的各个阶段及时发现并解决问题,降低软件发布后的故障率,提升用户体验。了解并熟练运用这类工具,是每个专业开发者必备的技能之一。通过深入研究和实践,...
总的来说,理解和正确使用已检查异常和未检查异常是编写高质量Java代码的关键。通过深入源码,可以更好地掌握异常处理的底层机制;而利用合适的开发工具,可以简化异常处理的日常工作,提高开发效率。在实际项目中,...
为了避免程序中断,可以使用`EXCEPTION WHEN NO_DATA_FOUND THEN`来捕获并处理这个异常。 2. **TOO_MANY_ROWS** (ORA-01422): 当`SELECT INTO`语句返回多于一行数据时,会出现此异常。在处理时,通常需要修改查询以...
标题中的"Exception"一词在IT领域中通常指的是程序运行...尽管没有具体的博客内容,但以上内容提供了关于"Exception"这一主题可能涵盖的广泛知识领域。如果想深入了解,可以尝试访问文章链接,获取更详细的指导和示例。
6. **日志分析**: Axis2的日志文件可以提供关于异常的更多信息。通过分析日志,可以发现可能的错误模式或系统状态。 7. **使用调试工具**:利用IDE的调试功能,逐步执行代码,观察何时何地抛出异常,以便找到问题...
在Android 10(API级别29)之后,你需要使用`MANAGE_EXTERNAL_STORAGE`权限来访问整个外部存储,或者使用`MEDIA_STORE` API来写入特定的公共目录。 此外,为了确保良好的用户体验,你可能希望在记录异常后进行一些...
4. **java.lang.NoClassDefFoundError- javax-servlet-jsp-jstl-core-Config - CSDN博客.url**:这个URL指向一个CSDN博客文章,很可能提供了关于如何解决特定`NoClassDefFoundError`的详细步骤,特别是与`javax....
- `std::exception`及其派生类的使用,如`std::runtime_error`,以及如何抛出和捕获异常。 - 异常安全编程实践,包括使用异常安全的构造函数和析构函数,以及在可能出现异常的代码块中使用`try-catch`块。 通过掌握...