站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题为什么要抛出例外?

为什么要抛出例外?

摘要: 为什么要抛出例外?


我写的javabean程序很多方法都没写抛出例外的代码,程序也正常运行,可是总看见别人的代码里有好多抛出例外的代码,有必要吗?
初学,请大侠们指点下,最好详细些,多谢了!


自己捕获了就不要抛
自己没有捕获,又不抛的话就不能通过编译
你可能没有遇到非要抛异常的程序吧
以后就明白了


呵呵,我也不喜欢抛很多异常的东西,
不过有的时候还是必要的


底层提供的接口一般设计都是要抛出异常,供上层调用,也就是上层逻辑进行异常的抓取,再做处理。


有时候抛出异常是必须的,写处理代码麻烦时


是向上抛出异常还是本身处理,使根据你自己的逻辑来设计的。
一般而言,底层的类,都是抛出异常的,因为这些底层的类与业务联系不紧,不可能做通用的处理。而调用这些底层类的对象,就可以根据捕获异常的不同,再根据相关业务,做出不同的处理。

比如,DAO中一个返回结果集的方法ResultSet getResult(...),肯定会是有SQLException异常产生的,这时,可以有两种处理方法:
1、抛出SQLException异常;
2、捕获异常进行处理,比如,如果有异常,就返回null。

常见的处理是抛出异常,由调用的类捕获后处理。
如果使用捕获异常返回null的方法处理,也无可厚非,这样,调用的类就要根据取到的结果是否为null来做相关处理了。

也不是所有的底层类都抛出异常,比如,一个关闭Connection的方法,就没有必要抛出异常了,因为抛出异常后,也是和不抛出一样的处理方法。

总之,抛不抛出,主要是看你怎么处理方便了。




如果有一个我自己设计、写的方法,那我应该写一个异常抛出好呢,还是用if...else..好?
感觉所有的抛出异常(除了必须抛出异常的方法)理论上都可以用if..else..代替,是吗?


通过异常你才知道自己的程序哪里出错了,如果你喜欢一杆子打下去,到时候出错了查死你
另外,如果你的异常要通知客户,哪你就必须往上抛


还是要跑得
一旦出现异常程序就结束了
这样不够友好


抓异常是为了更方便的处理错误吧...使程序更有完整性..一头抛了,在另一头调用时就要抓异常


全部抓 不要抛 自己写点中文 方便查找错误 及时修正


"全部抓 不要抛 自己写点中文 方便查找错误 及时修正",
"抓"和"抛"有什么分别?

为所有的方法都写例外处理是不是最好的方案?


有些书上写:"在商业应用中,例外处理的代码占到总代码的2/3,而正常处理的代码只占1/3",是这样吗?请大侠多多指点啊


因为传统的c/c++程序员都是用特定的数字作为返回码记录错误。
例如
return -1;就是表示文件不存在 等等

这种处理错误的方式没有扩展性,而且很容易与其他程序员自定的错误返回码重复。
所以Java引入了exception机制 ,并且使用exception链的形式处理,也就是exception可以一层一层地往上报

结合catch和finally关键字,可以比较优雅的解决错误处理的问题


"抓"和"抛"有什么分别?

为所有的方法都写例外处理是不是最好的方案

---------------------
抛: public void getResultSet() throws SQLException{}

抓: try{

}catch(Exception e){
e.printlnstrack();
}


to shiningsb(坚强的理由)
============
是不是"抓"就是在方法外部,而"抛"就是在方法内部?
我初学,您能说得易懂一点吗?谢谢!







up


各位说的都很有道理,抛出异常因程序而宜,但是个人见解抛出异常和捕获异常是十分必要的,像各位所说,如果你什么错误也不抛出,我想程序是不会运行通过的,既然JAVA中规定了异常我想自然有用处.呵呵!`


是向上抛出异常还是本身处理,使根据你自己的逻辑来设计的。
一般而言,底层的类,都是抛出异常的,因为这些底层的类与业务联系不紧,不可能做通用的处理。而调用这些底层类的对象,就可以根据捕获异常的不同,再根据相关业务,做出不同的处理。

比如,DAO中一个返回结果集的方法ResultSet getResult(...),肯定会是有SQLException异常产生的,这时,可以有两种处理方法:
1、抛出SQLException异常;
2、捕获异常进行处理,比如,如果有异常,就返回null。

常见的处理是抛出异常,由调用的类捕获后处理。
如果使用捕获异常返回null的方法处理,也无可厚非,这样,调用的类就要根据取到的结果是否为null来做相关处理了。

也不是所有的底层类都抛出异常,比如,一个关闭Connection的方法,就没有必要抛出异常了,因为抛出异常后,也是和不抛出一样的处理方法。

总之,抛不抛出,主要是看你怎么处理方便了。


抛出异常可以方便查错!


Java运行时环境搜寻调用堆栈来查找任意的处理特殊的异常的方法。一个方法能够抛出它内部的任何异常,所以允许一个上层调用堆栈的方法来捕获它。


↑返回目录
前一篇: “抓例外”和“抛例外”有何分别?
后一篇: 用递归遍历树形结构节点时出错,请帮忙看看!~(没分了,只有10分了)