java中处理异常的经验

UTF-8LLLLLL 2018-10-25 03:07:09
什么时候该抛出异常?什么时候该捕获异常?对于这两种方式有些模糊,老师说方法有返回值应该抛出异常,无返回值应该捕获异常,但有的时候业务逻辑不同又导致抛出或捕获不同,希望各路大神能给予解答
...全文
254 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2019-01-04
  • 打赏
  • 举报
回复
引用 楼主 UTF-8LLLLLL 的回复:
什么时候该抛出异常?什么时候该捕获异常?对于这两种方式有些模糊,老师说方法有返回值应该抛出异常,无返回值应该捕获异常,但有的时候业务逻辑不同又导致抛出或捕获不同,希望各路大神能给予解答

要么你老师学艺不精,要么你听岔了

异常处理纯粹是业务决定,或者看你的代码定位来决定
Mrlw 2019-01-03
  • 打赏
  • 举报
回复
和返回值无关,看你对于这个异常要怎么处理。
能处理或者程序需要继续执行,try-catch
无法处理,或者导致程序、任务无法继续,则抛出。
一般顶层的controller会统一接收,然后输出打印,返回给前台。
stacksoverflow 2018-10-26
  • 打赏
  • 举报
回复
对于方法的调用(不考虑远程调用),一般情况下,有两种结果: 1.正常返回 2.错误返回 其中(错误返回)可以用返回值表示错误(比如-1,null等),也可以用抛出异常表示错误, 但两者不可能同时出现,也就是不存在调用方法后即得到返回值,又得到异常信息的情况。 所以,解答你第一个问题,什么时候该抛出异常? 回答:在程序需要错误返回并且不想用返回值表示错误的时候,需要抛出异常。 第二个问题:什么时候该捕获异常? 回答:在你认为你的程序可以正确的识别并处理这个异常信息的时候,可以捕获该异常并处理掉。 否则,就交给上一层来处理(抛出); 如果一直向上抛,最终会抛给系统(你的程序是由系统启动的)导致系统异常(这时一般会结束程序)。 所以实际开发中,一般在框架层对标准异常进行处理。并且在编码规范中规定业务异常的抛出和处理方式。 如果还有问题可以来我空间提问(www.java123.vip)
UTF-8LLLLLL 2018-10-26
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
捕捉不捕捉异常,要看业务需求 如果业务上没有需求,那就从系统的健壮性考虑,比如出现异常时系统会不会崩溃,或者出现异常后需不需要后续的特定处理
了解了,感谢
UTF-8LLLLLL 2018-10-26
  • 打赏
  • 举报
回复
引用 2 楼 stacksoverflow 的回复:
对于方法的调用(不考虑远程调用),一般情况下,有两种结果: 1.正常返回 2.错误返回 其中(错误返回)可以用返回值表示错误(比如-1,null等),也可以用抛出异常表示错误, 但两者不可能同时出现,也就是不存在调用方法后即得到返回值,又得到异常信息的情况。 所以,解答你第一个问题,什么时候该抛出异常? 回答:在程序需要错误返回并且不想用返回值表示错误的时候,需要抛出异常。 第二个问题:什么时候该捕获异常? 回答:在你认为你的程序可以正确的识别并处理这个异常信息的时候,可以捕获该异常并处理掉。 否则,就交给上一层来处理(抛出); 如果一直向上抛,最终会抛给系统(你的程序是由系统启动的)导致系统异常(这时一般会结束程序)。 所以实际开发中,一般在框架层对标准异常进行处理。并且在编码规范中规定业务异常的抛出和处理方式。 如果还有问题可以来我空间提问(www.java123.vip)
感谢大佬,解答的很详细
hao1989 2018-10-26
  • 打赏
  • 举报
回复
1、如果你不能处理异常,不要捕获该异常。 2、如果要捕获,应在离异常源近的地方捕获它。 3、用自定义的异常类,不要每次需要抛出异常的时候都抛出java.lang.Exception。方法的调用者可以通过throws知道有哪些异常需要处理--所以它是自我描述的 4、如果你编写业务逻辑,对于终端用户无法修复的错误,系统应该抛出非检查的异常(unchecked exception);如果你编写一个第三方的包给其他的开发人员用,对于不可修复的错误要用需要检查的异常(checked exception)
qybao 2018-10-25
  • 打赏
  • 举报
回复
捕捉不捕捉异常,要看业务需求 如果业务上没有需求,那就从系统的健壮性考虑,比如出现异常时系统会不会崩溃,或者出现异常后需不需要后续的特定处理

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧