黑马程序员技术交流社区
标题:
runtimeExcetion异常疑惑
[打印本页]
作者:
郑昌奋
时间:
2013-3-15 13:25
标题:
runtimeExcetion异常疑惑
本帖最后由 郑昌奋 于 2013-3-15 15:57 编辑
为什么runtimeExcetion和他的子类都不需要声明出来呢?如果说只是为了让程序停掉,干吗不直接来一个break就行了啊。或者来一个return语句也能停掉啊
作者:
MyNameIs520
时间:
2013-3-15 13:49
本帖最后由 吴上波 于 2013-3-15 13:58 编辑
我也没搞得好清楚,大概理了一下Java Exception的框架
Java中异常有两类:一类是checked异常 ,一类是RuntimeException。
checked异常程序编译期间就会报错,无法通过编译,这类异常比较好处理。
相反,RuntimeException这类异常主要是由程序的逻辑错误造成的。
有可能是数组越界,文件无法找到,用户输入了错误的数据类型,等等,这类异常的不确定性太大了,程序员很难再最初编写代码时就全部考虑在内。
所以系统允许其不被声明抛出,同样系统也允许不catch。其实这是好事啊
异常的处理主要目的是,即使程序出现了异常,也要让程序继续运行,我觉得写break或者return就违背了异常机制的初衷
作者:
HM李帅
时间:
2013-3-15 13:53
runtimeExcetion大多不是什么程序有问题
比如你得数组长度为5
你使用的时候用了a[5],越界了
但是这个越界是你在编写程序时候考虑不周出现的
而不是语法错误 从语法上来说 a[5]与a[100]一样 都属于正常调用
所以只有在程序执行的时候才会发现 原来这里越界了。。。
作者:
沉默de羔羊
时间:
2013-3-15 13:55
本帖最后由 沉默de羔羊 于 2013-3-15 13:58 编辑
runtimeExcetion是运行的时候报的错误,也就是说它是语法没有问题,只是程序运行的时候出现的错误。
不需要声明的原因是:不用处理也是能正常编译的!只是运行的时候报错了,你根据错误提示,进行处理自己的程序就好了!
并不是说runtimeExcetion只是单纯的让程序停止下来,他是要进行报错处理,然后进行对于的错误提示的呃!
break和return是针对正常程序而言,并且用法各不相同!break针对对象是循环体,return是给对应方法返回对应的值或对象!
作者:
HM李超
时间:
2013-3-15 15:07
没有完善错误处理的代码根本就不会被执行。
Java提供了Checked异常和Runtime异常,Java人为Checked异常都是可以被处理(修复)的异常,所以必须显式处理Checked异常,如果没有处理这些异常,程序就无法通过编译,简而言之,Checked异常在编译时报错。
而Runtime异常出错都在程序运行时报错,例如数组角标越界或者空指针异常等等,这些都是异常在语法上没有错误,都是在实现细节上出错,Java必须显式地抛出这些异常,包括这些异常的基本信息,以便修复,使程序更加健壮。
而如果使用break或者return语句,break一般用在循环和swith语句中,停止循环,不是中断程序,return虽然可以停止运行的代码,但是这时说明代码已经出现异常了,用return中断后,程序员根本不太会明白程序到底哪里出现了异常?哪里需要修复?以及怎么修复?
作者:
郑昌奋
时间:
2013-3-15 15:57
HM李超 发表于 2013-3-15 15:07
没有完善错误处理的代码根本就不会被执行。
Java提供了Checked异常和Runtime异常,Java人为Che ...
嗯,明白了
作者:
VOIDMAIN
时间:
2013-3-15 20:35
学习了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2