黑马程序员技术交流社区
标题:
error和exception有什么区别?
[打印本页]
作者:
王晓东
时间:
2012-6-4 11:28
标题:
error和exception有什么区别?
如题:error和exception有什么区别?
作者:
龙秋地
时间:
2012-6-4 11:34
本帖最后由 龙秋地 于 2012-6-4 13:19 编辑
异常:就是程序在运行时出现不正常情况.
对于问题的划分:两种:一种严重的问题,一种非严重的问题.
对于严重的,java通过Error类进行描述.
对于Error一般不编写针对性的代码对其进行处理.
对于非严重的,java通过Exception类进行描述.
对于Exception可以使用针对性的处理方式进行处理
Throwable
|---Error
|---Exception
举个例子:例如Throwable是疾病.那么Error就是癌症,不用针对性处理了.
Exception就是感冒发烧,可以处理.
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指
望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程
序运行正常,从不会发生的情况。
作者:
唐辉辉
时间:
2012-6-4 11:37
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 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
作者:
金鑫
时间:
2012-6-4 11:38
本帖最后由 金鑫 于 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:抛出异常,当没有能力处理异常,或者不想处理,为了描述结构的时候,那么可以不去处理异常而把异常重当前位置抛出
作者:
张洁
时间:
2012-6-4 13:14
Error
表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,通俗点说呢。。。就是error 表示恢复不是不可能但很困难的情况下的一种严重问题。。
比如说内存溢出等,对于这些错误,程序基本无能为力,除了退出运行外也没有其他的选择,它是由jvm抛出的。
Exception
在毕老师的视频里说的很清楚啦~~~就是表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
也就是说
Exception
是可以预知的以及当想要错误出现能做出处理的 。
我是这么理解,不知道对不对啊~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2