黑马程序员技术交流社区

标题: Exception和RuntimeException的区别是什么? [打印本页]

作者: Beka    时间: 2014-7-18 15:11
标题: Exception和RuntimeException的区别是什么?
Exception和RuntimeException的区别是什么?
作者: 战狼    时间: 2014-7-18 15:17
Exception包含了RuntimeException,相当于RuntimeException的父亲,这样给你说吧,Exception相当于总异常,而RuntimeException就是子异常。
作者: 柳超    时间: 2014-7-18 15:40
RuntimeException 是属于unchecked (java 编译器允许不catch)表示一类 未知的不确定的只有在运行时才会出现的异常。 原则上説不需要你在
而非RuntimeException 是checked (java 编译器必须要求 catch),大概指一类可以预知的,当发生异常后知道如何处理的异常,所以需要捕获。
作者: 掌柜的--刘饮    时间: 2014-7-18 16:57
Java中的异常处理机制的简单原理和应用(张老师的回答)


      异常是指java程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个对象来表示,Java使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别封装到一个对象来表示的,该对象中包含有异常的信息。

     Java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异常的根类为java.lang.Throwable,Throwable下面又派生了两个子类:Error和Exception,Error 表示应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,说内存溢出和线程死锁等系统问题。Exception表示程序还能够克服和恢复的问题,其中又分为系统异常和普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉,例如,数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常(NullPointerException)、类转换异常(ClassCastException);普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。

     java为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须try..catch处理或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常,而系统异常可以处理也可以不处理,所以,编译器不强制用try..catch处理或用throws声明,所以系统异常也称为unchecked异常。

作者: 南柯一梦    时间: 2014-7-18 22:35
Runtimeexception是Exception的直接子类,但Exception异常是编译时异常,在编译时必须处理,要么try,要么声明;而RuntimeException是运行时异常,可处理可不处理,编译时期不处理也能运行,只是在运行时输入错误数据才会发生




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