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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王晓东 初级黑马   /  2012-6-4 11:28  /  1300 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题:error和exception有什么区别?

4 个回复

倒序浏览
本帖最后由 龙秋地 于 2012-6-4 13:19 编辑

异常:就是程序在运行时出现不正常情况.
对于问题的划分:两种:一种严重的问题,一种非严重的问题.
对于严重的,java通过Error类进行描述.
    对于Error一般不编写针对性的代码对其进行处理.
对于非严重的,java通过Exception类进行描述.
    对于Exception可以使用针对性的处理方式进行处理
Throwable
    |---Error
    |---Exception
举个例子:例如Throwable是疾病.那么Error就是癌症,不用针对性处理了.
Exception就是感冒发烧,可以处理.
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指
望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程
序运行正常,从不会发生的情况。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
Error类和Exception类都继承自Throwable类。

Error的继承关系:

java.lang.Object
--java.lang.Throwable
--java.lang.Error



Exception的继承关系:

java.lang.Object
--java.lang.Throwable
--java.lang.Exception


二者的不同之处:

Exception:

1.可以是可被控制(checked) 或不可控制的(unchecked)

2.表示一个由程序员导致的错误

3.应该在应用程序级被处理

Error:

1.总是不可控制的(unchecked)

2.经常用来用于表示系统错误或低层资源的错误

3.如何可能的话,应该在系统级被捕捉




Java 中定义了两类异常:

1) Checked exception: 这类异常都是Exception的子类 。异常的向上抛出机制进行处理,假如子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。

2) Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是非凡的,它们不能通过client code来试图解决,所以称为Unchecked exception 。


另外:


error  表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。  

exception  表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。  

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 金鑫 于 2012-6-4 11:39 编辑

它们两个是Throwable的两个分支,异常类的具体如下
Object-->Throwable-->Error-->XXXError
                               -->Exception-->RuntimeException:可以处理也可以不处理
                                                        非RuntimeException:一定需要处理的异常

error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等exception指的是异常,或者理解为程序运行过程中出现的意外情况
exception(异常)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,在程序运行(编译)的时候可能出现的不正常的状态,一旦出现异常程序无法正常结束。

一但程序中出现异常就会自动产生一个异常对象

异常处理机制:
try
{

}catch(Exception e)
{

}finally
{

}

try块:放置可能会出现异常的代码
catch()块:()放置异常类对象的引用,或者所有异常类的父类Exception的引用;块中放置对异常的处理代码
finally块:不受任何异常影响的代码

多重catch:当一段代码中出现多处异常的时候
try
{
100
}catch(xxException e)
{

}catch(JJException e)
{

}catch(Exception e)
{

}
注意:
1、多重catch一次只会捕获一个异常,然后跳过其他所有的catch块
2、关于Exception的捕获一定是放在最后一个catch块中
throws:抛出异常,当没有能力处理异常,或者不想处理,为了描述结构的时候,那么可以不去处理异常而把异常重当前位置抛出

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
Error表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,通俗点说呢。。。就是error 表示恢复不是不可能但很困难的情况下的一种严重问题。。
比如说内存溢出等,对于这些错误,程序基本无能为力,除了退出运行外也没有其他的选择,它是由jvm抛出的。
   
Exception在毕老师的视频里说的很清楚啦~~~就是表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
也就是说Exception是可以预知的以及当想要错误出现能做出处理的 。

我是这么理解,不知道对不对啊~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马