java中处理异常的经验 什么时候该抛出异常?什么时候该捕获异常?对于这两种方式有些模糊,老师说方法有返回值应该抛出异常,无返回值应该捕获异常,但有的时候业务逻辑不同又导致抛出或捕获不同,希望各路大神能给予解答 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对于方法的调用(不考虑远程调用),一般情况下,有两种结果:1.正常返回2.错误返回其中(错误返回)可以用返回值表示错误(比如-1,null等),也可以用抛出异常表示错误,但两者不可能同时出现,也就是不存在调用方法后即得到返回值,又得到异常信息的情况。所以,解答你第一个问题,什么时候该抛出异常?回答:在程序需要错误返回并且不想用返回值表示错误的时候,需要抛出异常。第二个问题:什么时候该捕获异常?回答:在你认为你的程序可以正确的识别并处理这个异常信息的时候,可以捕获该异常并处理掉。否则,就交给上一层来处理(抛出);如果一直向上抛,最终会抛给系统(你的程序是由系统启动的)导致系统异常(这时一般会结束程序)。所以实际开发中,一般在框架层对标准异常进行处理。并且在编码规范中规定业务异常的抛出和处理方式。如果还有问题可以来我空间提问(www.java123.vip) 1、如果你不能处理异常,不要捕获该异常。2、如果要捕获,应在离异常源近的地方捕获它。3、用自定义的异常类,不要每次需要抛出异常的时候都抛出java.lang.Exception。方法的调用者可以通过throws知道有哪些异常需要处理--所以它是自我描述的4、如果你编写业务逻辑,对于终端用户无法修复的错误,系统应该抛出非检查的异常(unchecked exception);如果你编写一个第三方的包给其他的开发人员用,对于不可修复的错误要用需要检查的异常(checked exception) 和返回值无关,看你对于这个异常要怎么处理。能处理或者程序需要继续执行,try-catch无法处理,或者导致程序、任务无法继续,则抛出。一般顶层的controller会统一接收,然后输出打印,返回给前台。 Tomcat 内存溢出 大家能不能帮忙看看问题出在哪里? 急!java如何调用其它语言的类库? 我急呀!请问作类型转换问题??? j2se与sdk有什麽联系和区别? 能不能在TextField中做用insertString( )的方法呢? 如何获取一个随机数? 为什么我作的带签名的applet不能运行? JDBC的问题 Java java swing 怎么实现外面panel可以根据里面panel的按钮改变? 为什么抽象类可以实例化
1.正常返回
2.错误返回
其中(错误返回)可以用返回值表示错误(比如-1,null等),也可以用抛出异常表示错误,
但两者不可能同时出现,也就是不存在调用方法后即得到返回值,又得到异常信息的情况。所以,解答你第一个问题,什么时候该抛出异常?
回答:在程序需要错误返回并且不想用返回值表示错误的时候,需要抛出异常。第二个问题:什么时候该捕获异常?
回答:在你认为你的程序可以正确的识别并处理这个异常信息的时候,可以捕获该异常并处理掉。
否则,就交给上一层来处理(抛出);
如果一直向上抛,最终会抛给系统(你的程序是由系统启动的)导致系统异常(这时一般会结束程序)。所以实际开发中,一般在框架层对标准异常进行处理。并且在编码规范中规定业务异常的抛出和处理方式。
如果还有问题可以来我空间提问(www.java123.vip)
2、如果要捕获,应在离异常源近的地方捕获它。
3、用自定义的异常类,不要每次需要抛出异常的时候都抛出java.lang.Exception。方法的调用者可以通过throws知道有哪些异常需要处理--所以它是自我描述的
4、如果你编写业务逻辑,对于终端用户无法修复的错误,系统应该抛出非检查的异常(unchecked exception);如果你编写一个第三方的包给其他的开发人员用,对于不可修复的错误要用需要检查的异常(checked exception)
能处理或者程序需要继续执行,try-catch
无法处理,或者导致程序、任务无法继续,则抛出。
一般顶层的controller会统一接收,然后输出打印,返回给前台。