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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 苏格拉底的弟子 于 2012-1-5 14:16 编辑

晚上刚复习了下异常类...现在又恨迷糊了
我们在函数内部throw了 RuntimeException  就可以不在函数上声明了,  而不在函数上声明也就是说不需要处理了,然后我们抛异常不就是为了别人可以处理吗?为什么这个不需要处理呢?而让在运行时出错。

评分

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

查看全部评分

4 个回复

正序浏览
谢谢楼上  明白了
回复 使用道具 举报
这个问题之前也困惑了我,现在想通了,抛出RuntimeException是希望程序停止运行,把错误的代码改过来,因为如果抛出的不是RuntimeException,那么抛出的异常首先会被处理,这样编译也通过了,运行时由于异常已被处理不会阻止程序的继续运行。举个例子,我们希望在被除数为正数的已知情况去限定除数是正数,这样就可以的一个正数的商,我们就会限定if(除数<=0) throws FuException, 而如果这个异常不是RuntimeException,那么会被我们处理掉,而这个处理通常也只是打印出出现了什么异常,他无法去改变调用者传入的除数,这样异常处理了,程序接着运行,可是这时参与继续运行的商就是个负数了,而我们希望看到的是一个正数的商参与接下来的运行,那么这些用负数的值进行的运行也没有意义了,而错误因为被处理后程序继续运行也没掩饰了。

评分

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

查看全部评分

回复 使用道具 举报
抛出RuntimeException(“”)是让程序停止下来,并且通过指定后面的字符串可以很明显看出
程序是哪个地方出错了,便于以醒目的提示告诉编程人员出错了。后面的字符串往往有很强的针对
性。

评分

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

查看全部评分

回复 使用道具 举报
我的粗浅理解是:抛出RuntimeException异常,让在运行时停止代码运行,让程序员自己去改正错误。也就是说这种异常原因可能是程序员自己写代码时的不当造成的,通过改正就可以解决的错误。所以才抛此异常让程序停下来,等待程序员去改正。这样的话也就不用在函数上抛了,因为要是在函数上抛了,那在编译时读函数头的时候就检查到异常了,就等不到运行时发现函数内部的异常了。

评分

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

查看全部评分

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