黑马程序员技术交流社区

标题: 定义异常处理时,什么时候定义try,什么时候定义throws呢? [打印本页]

作者: JTANISME    时间: 2014-9-22 09:14
标题: 定义异常处理时,什么时候定义try,什么时候定义throws呢?
定义异常处理时,什么时候定义try,什么时候定义throws呢?
作者: 杨佳名    时间: 2014-9-22 11:39
在可能会出现exception的地方,要使用try-catch或者throws或者两者都要。我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-catch掉这个exception;如果希望外部知道,则在catch到之后把exception直接抛出或者抛出自定义的exception。
1、如果无法处理某个异常,那就不要捕获它。
2、如果捕获了一个异常,请不要胡乱处理它。
3、尽量在靠近异常被抛出的地方捕获异常。
4、在捕获异常的地方将它记录到日志中,除非您打算将它重新抛出。
5、按照您的异常处理必须多精细来构造您的方法。
6、需要用几种类型的异常就用几种,尤其是对于应用程序异常。
作者: 花开彼岸天    时间: 2014-9-22 11:46
任何与系统内存有关联的时候,就必须try catch     
作者: fantacyleo    时间: 2014-9-22 11:48
一般的原则很简单:谁引起的异常谁try/catch,否则throw

举2个例子:
ArrayList类的get方法,如果get方法的调用者传入一个越界的下标,那么问题的责任在调用者而不是get方法的编写者。因此,get方法中发现下标异常,throw即可

TreeSet中重写了clone方法,其源代码中调用了其父类的clone方法,由于是我调用的,那么出了问题当然由我负责,因此TreeSet的clone方法中有一个try/catch块来处理CloneNotSupport异常




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2