A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏格拉底的弟子 黑马帝   /  2012-1-9 11:14  /  2201 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么需要抛异常啊,,而不自己处理啊??  打个比方吧..  假如A调用B方法 B调用C方法 ,,  C里面出现了异常,C 就抛出异常了,, 然后B 和C 都可能要做Tty 或者也抛..

我想假如第一次C出现了异常  不是抛出,而是自己处理了,,,  那后面B 和C用的时候不就更方便了..而不用抛出 或者处理了....
我哪里没弄明白啊??

4 个回复

倒序浏览
抛出异常实际是作为另一种返回值来使用的。 这样做的好处一是可以不干扰正常的返回值,
另一个是调用者必须处理异常,而不像以前c语言返回一个整数型的错误码,调用者往往将它忽略了
还有就是为了不破坏代码逻辑
比如
dao层 只是和数据库交互的,有异常的话(包括自己定义的异常)你要抛出,不要在dao层进行过多的逻辑操作,你可以在service层捕获 然后抛出异常,在view层对异常进行处理

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
抛异常是因为自己解决不了
就像定火车票一样,你现在看到还有一张票,你点预定了,B也看到了,也点预定了,你们都提交订单了,可是就一张票了,这是数据处理层就把那张票给了你,因为网速快啊,但 B怎么办呢,这是数据处理层就得让它的上一层知道现在已经没票了啊,所以就向上抛异常了.

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
样做的好处一是可以不干扰正常的返回值,
另一个是调用者必须处理异常,而不像以前c语言返回一个整数型的错误码,调用者往往将它忽略了
还有就是为了不破坏代码逻辑
比如
dao层 只是和数据库交互的,有异常的话(包括自己定义的异常)你要抛出,不要在dao层进行过多的逻辑操作,你可以在service层捕获 然后抛出异常,在view层对异常进行处理

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
一方面:假如你自己开发了一个类,代码里面某个地方可能会引发某某错误,你有你的解决方法,但是别人也有他自己期望的解决方法啊,所以你就抛出来呗,别人拿到了就会用自己的方法对其做出详细处理。
另一方面:制定标准永远是最牛B的。我就告诉你这里可能会有问题,具体怎么处理我不管,你爱咋整咋整。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马