黑马程序员技术交流社区

标题: 运行时异常与一般异常有何异同? [打印本页]

作者: 为谁开?茶花满    时间: 2013-4-29 15:51
标题: 运行时异常与一般异常有何异同?
运行时异常与一般异常有何异同?
作者: 吴波    时间: 2013-4-29 16:00
异常
        就是程序在运行时出现不正常情况,是对问题的描述,将问题进行对象的封装
        由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述
             并封装成对象,其实就是java对不正常情况进行描述后的对象体现
        问题划分:
                严重的问题:java通过Error类进行描述
                        对于Error一般不编写针对性的代码对其进行处理
                非严重问题:java通过Exception类进行描述
                        对于Exception可以使用针对性的代码对其进行处理


异常有两种:
                编译时被检测异常
                        该异常在编译时,如果没有处理(不抛也不try),编译失败
                        该异常被标识,代表这可以被处理
                运行时异常(编译时不检测)
                        在编译时,不需要处理,编译器不检查
                        该异常的发生,建议不处理,让程序停止,需要对代码进行修正

作者: 陈国斌    时间: 2013-4-29 16:22
我在学习的时候,也觉得异常有些难理解,后来经过分析我认为可能有这样的原因:
一般来说,实际情况中都是开发的人在做一些功能时,标识了异常,调用者调用了这些功能后进行相应处理,而我们在学习过程中都是自己写功能,自己标识异常,自己又解决异常,就有点懵了。
异常分两种:编译时被检测的异常和编译时不被检测的异常(运行时异常:RuntimeException)
Exception中有一个特殊的子类,RuntimeException,运行时异常,如果在函数内抛出该异常对象,函数上可以不用声明,如果在函数上声明该异常,调用者可以不进行处理,编译一样能通过。
之所以不用在函数上声明,是因为不需要让调用者处理,在运行时,当该异常发生,就无法在进行运算,希望程序停止后对代码进行修正。
如果自定义的异常发生时程序无法再运行的话,就让自定义的异常继承RuntimeException.
希望多交流!
作者: 何锦权    时间: 2013-4-29 20:49
  Java异常可分为3种:

  (1)编译时异常:Java.lang.Exception

  (2)运行期异常:Java.lang.RuntimeException

  (3)错误:Java.lang.Error
编译异常在编译时候,必须try或者抛,否则会编译失败。
运行时异常,在编译时候,不声明,不对其进行try处理,也不会报错,但对其声明,或者try处理,也是可以的
但是一般运行时异常发生,就是让程序能停下来,让我们来检查错误

作者: cowthan    时间: 2013-4-29 21:43
学习一下,我的片面理解是:
——运行时异常是数组越界,除0,内存耗尽之类的异常,一般会造成程序停止
——其他异常就是其他一些异常情况,比如文件不存在,这时你没必要停止程序,只要在代码里处理一下就行

不过话又说回来,文件不存在也有两种情况:
——如果你的程序运行时,配置文件本应该存在,不存在不行,那不存在就是运行时异常,程序应该停
——如果你的程序运行时,允许配置文件可能不存在,那这就不是运行时异常,不应该造成程序停止,

作者: 黄玉昆    时间: 2013-4-30 23:34
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2