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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑昌奋 中级黑马   /  2013-3-15 13:25  /  2311 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑昌奋 于 2013-3-15 15:57 编辑

为什么runtimeExcetion和他的子类都不需要声明出来呢?如果说只是为了让程序停掉,干吗不直接来一个break就行了啊。或者来一个return语句也能停掉啊

评分

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

查看全部评分

6 个回复

倒序浏览
本帖最后由 吴上波 于 2013-3-15 13:58 编辑

我也没搞得好清楚,大概理了一下Java Exception的框架
Java中异常有两类:一类是checked异常 ,一类是RuntimeException。
checked异常程序编译期间就会报错,无法通过编译,这类异常比较好处理。
相反,RuntimeException这类异常主要是由程序的逻辑错误造成的。
有可能是数组越界,文件无法找到,用户输入了错误的数据类型,等等,这类异常的不确定性太大了,程序员很难再最初编写代码时就全部考虑在内。
所以系统允许其不被声明抛出,同样系统也允许不catch。其实这是好事啊
异常的处理主要目的是,即使程序出现了异常,也要让程序继续运行,我觉得写break或者return就违背了异常机制的初衷

评分

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

查看全部评分

回复 使用道具 举报
runtimeExcetion大多不是什么程序有问题  
比如你得数组长度为5
你使用的时候用了a[5],越界了
但是这个越界是你在编写程序时候考虑不周出现的
而不是语法错误  从语法上来说  a[5]与a[100]一样  都属于正常调用
所以只有在程序执行的时候才会发现 原来这里越界了。。。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 沉默de羔羊 于 2013-3-15 13:58 编辑

runtimeExcetion是运行的时候报的错误,也就是说它是语法没有问题,只是程序运行的时候出现的错误。

不需要声明的原因是:不用处理也是能正常编译的!只是运行的时候报错了,你根据错误提示,进行处理自己的程序就好了!

并不是说runtimeExcetion只是单纯的让程序停止下来,他是要进行报错处理,然后进行对于的错误提示的呃!

break和return是针对正常程序而言,并且用法各不相同!break针对对象是循环体,return是给对应方法返回对应的值或对象!

评分

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

查看全部评分

回复 使用道具 举报
      没有完善错误处理的代码根本就不会被执行。
      Java提供了Checked异常和Runtime异常,Java人为Checked异常都是可以被处理(修复)的异常,所以必须显式处理Checked异常,如果没有处理这些异常,程序就无法通过编译,简而言之,Checked异常在编译时报错。
      而Runtime异常出错都在程序运行时报错,例如数组角标越界或者空指针异常等等,这些都是异常在语法上没有错误,都是在实现细节上出错,Java必须显式地抛出这些异常,包括这些异常的基本信息,以便修复,使程序更加健壮。
       而如果使用break或者return语句,break一般用在循环和swith语句中,停止循环,不是中断程序,return虽然可以停止运行的代码,但是这时说明代码已经出现异常了,用return中断后,程序员根本不太会明白程序到底哪里出现了异常?哪里需要修复?以及怎么修复?
      

评分

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

查看全部评分

回复 使用道具 举报
HM李超 发表于 2013-3-15 15:07
没有完善错误处理的代码根本就不会被执行。
      Java提供了Checked异常和Runtime异常,Java人为Che ...

嗯,明白了
回复 使用道具 举报
学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马