请问在设计方法时,RuntimeException什么时候应该放在声明抛出异常? [问题点数:20分,结帖人king769147]
- 收藏帖子
- 回复
结帖率 98.77%
例如,API中的Integer中的
Java code?
1 2 3 |
|
方法,
和File中的构造器
Java code?
1 2 3 4 5 6 7 |
|
有时写代码的时候,不用在方法上声明 throws, 然后直接判断就 throw一个Exception实例.
但是有时又发现抛出.
老婆半夜召唤十级上古神兽,战力瞬加1000w,吓哭!广告 37游戏 · 顶新
问题点数:20分
0 2015-03-01 23:39:57
回复数 7 只看楼主 引用 举报 楼主
Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查的异常必须要用throws语句在方法或者是构造函数上声明。
0 2015-03-02 00:39:12
只看TA 引用 举报 #1 得分 4
JAVA Exception和RuntimeException的区别和用法、用处JAVA Exception和RuntimeException的区别和用法、用处 记得以前刚学JAVA时候,不知道Exception和RuntimeException怎么用,直至今天在项目中遇到问题,才豁然开朗。故写下心得体会,当然也未必完全正确,仅仅个人理解。 ①Exception, 非运行时异常,在项目运行之前必须处理掉。一般由程序员try catch 掉。 ②RuntimeEx
引用 1 楼 yuejingdong 的回复:
Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查的异常必须要用throws语句在方法或者是构造函数上声明。
我知道哈 ,checked Exception就是 RuntimeException哈, unchecked Exception就是 非RuntimeException.
但是上面的NumberFormatException也是RuntimeException,
也就是说,上面我贴的两个API代码,都是RuntimeException.但是你不是看见有的声明在方法中,有的没声明么.
所以我才上贴.
0 2015-03-02 01:32:41
只看TA 引用 举报 #2 得分 0
Java的声明抛出异常声明抛出异常 这个体系中的所有类和对象都具备一个独有的特点;就是可抛性。可抛性的体现:就是这个体系中的类和对象都可以被throws和throw两个关键字所操作。 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。 在方法声明中用throws语句可以声明抛出异常的列表,th...
引用 1 楼 yuejingdong 的回复:
Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查的异常必须要用throws语句在方法或者是构造函数上声明。
打错了,
checked Exception就是 非RuntimeException哈, unchecked Exception就是 RuntimeException
但是还是我说的问题.
上面API代码,都是 unchecked Exception.
但是写法不同.所以我上贴
0 2015-03-02 01:35:07
只看TA 引用 举报 #3 得分 0
throw new RuntimeException("",e)e.printStackTrace( )是打印异常栈信息throw new RuntimeException(e)是把异常包在一个运行时异常中抛出。e.printStackTrace();在实际开发时意义不大,因为部署以后不会有人看控制台,这句很多情况下会被记录日志的代码代替。throw new RuntimeException就是要把异常继续抛出,要么由上层方法解决,要么会终止程序运行,比如这里...
throws用来修饰一个方法,表示该方法如果产生异常的话,不在本方法中捕获, 而是丢弃给调用此方法的对象来处理(一般是非RuntimeException)。
throw是用来在程序中手动抛出一个异常,这个异常通常都是自定义的。
RuntimeException可以不捕获,直接抛出去,如果一直没有处理,jvm会自动处理。
0 2015-03-02 21:16:52
只看TA 引用 举报 #4 得分 0
Java中哪些异常必须声明并捕获,否则产生编译错误RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。也就是说,非RuntimeException异常类或者其子类的的异常都要声明捕捉。只有RuntimeException 或者是其子类的异常是不需要进行声明捕捉的。 Throwable
引用 4 楼 yuejingdong 的回复:
throws用来修饰一个方法,表示该方法如果产生异常的话,不在本方法中捕获, 而是丢弃给调用此方法的对象来处理(一般是非RuntimeException)。
throw是用来在程序中手动抛出一个异常,这个异常通常都是自定义的。
RuntimeException可以不捕获,直接抛出去,如果一直没有处理,jvm会自动处理。
你好像答非所问.我觉得,声明的话,可以指示调用者需要注意可能发生的异常.我觉得正规点还是要声明, 我发现java API都是. 当然,不声明也没错.
吸烟前巧用一物,当天排出“恶露”,健康到尖叫广告 亚通 · 燨燚
0 2015-03-02 22:32:19
只看TA 引用 举报 #5 得分 0
我觉得第一个例子中的throws NumberFormatException写不写都可以,写的好处是调用此方法的对象知道这个方法可能会出现这种异常,并进行处理。RuntimeException在很多时候并不清楚会发生什么异常,所以一般情况下没有必要写,也很难写全。交给jvm处理就好了。RuntimeException以外的异常是必须要处理的。
第二个例子是一个异常类的使用方法,通过抛出异常可以快速退出当前处理,返回调用此方法的对象,在那个对象里再catch住这个异常,进行相应处理。
0 2015-03-02 23:34:03
只看TA 引用 举报 #6 得分 16
什么时候要抛出异常? !在编写代码的过程中,经常会遇到这样的选择,检查到一个不正常的情况,或者某个操作失败,或者检测到 某个异常,此后该怎么办?是抛出一个异常?还是放回一个表示操作失败的返回值? 前一段在北京和小汤他们谈起这个问题的时候,有了一些粗略的想法。这段时间在 Leo4Net 的开发中,一些 想法逐步清晰起来。 === abc === === 两种方式的不同 === × 返
引用 6 楼 yuejingdong 的回复:
我觉得第一个例子中的throws NumberFormatException写不写都可以,写的好处是调用此方法的对象知道这个方法可能会出现这种异常,并进行处理。RuntimeException在很多时候并不清楚会发生什么异常,所以一般情况下没有必要写,也很难写全。交给jvm处理就好了。RuntimeException以外的异常是必须要处理的。
第二个例子是一个异常类的使用方法,通过抛出异常可以快速退出当前处理,返回调用此方法的对象,在那个对象里再catch住这个异常,进行相应处理。
是哈, 后来我也这样想,从功能上说,加不加都是可以. 从远的方向想,如果发布为doc,就提示调用者可能抛出什么异常.