查看完整版本: [-- error和exception有什么区别? --]

北风网 -> 技术问答及分享区 -> error和exception有什么区别? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lkq 2008-10-19 18:06

error和exception有什么区别?请大家详细解释啊。

lkq 2008-10-19 18:10
请大家帮忙啊,期望您的解答

yoling 2008-10-19 18:57
简单的说,error是程序员解决不了的错误,exception是可以预知的以及当想要错误出现能做出处理的。
error属于系统固有缺陷,exception是编程时候程序运行过程中有可能产生的错误,我是这么理解,不知道对不对啊~

xakf4220551 2008-10-19 19:10
error属严重错误,exception编程错误。

tsy 2008-10-19 19:33
Error表示系统级的错误和程序不必处理的异常,
Exception表示需要捕捉或者需要程序进行处理的异常。

likaishui 2008-10-19 22:31
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况

zhaowenm 2008-10-19 22:52
error 表示恢复不是不可能但很困难的情况下的一种严重问题.比如说内存溢出.不可能指望程序能处理这样的情况.

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


    Java Exception用法:

    在Java程序的执行过程中,如果出现了异常事件,就会生成一个例外对象.

    java中的例外类可分为两大类:

    Error:

    动态链接失败,虚拟机错误等,通常Java程序不应该捕获这类例外,也不会抛弃这种例外.

    Exception:

    1)运行时例外:

    继承于RuntimeException的类都属于运行时例外,

    由于这些例外产生的位置是未知的,Java 编译器允许程序员在程序中不对它们做出处理.

    2)非运行时例外:

    除了运行时例外之外的其他由Exception 继承来的例外类都是非运行时的例外,

    Java编译器要求在程序中必须处理这种例外.

    两种处理例外的机制:

    捕获例外:

    简言之,就是try-catch语句.

    声明抛弃例外:

    如果一个方法并不知道如何处理所出现的例外,则可在方法声明时,

    声明抛弃(throws)例外.这是一种消极的例外处理机制.

    简言之,就是在方法前加throws Xxx.

    例外类的层次见HELP

    try-catch-finally:

    try{

    ……

    }catch( ExceptionName1 e ){//没一个catch语句称为一个异常处理器

    ……

    }catch( ExceptionName2 e ){

    ……

    }

    ……

    }finally{

    ……

    }

    在执行try语句块期间的任何时刻抛出异常是,如果存在相应的异常处理器,程序控制会立即转到它

    上面.就是说,程序控制会转到其异常类与所抛出的异常类对应的第一个catch句子上.执行完catch

    子句后,程序控制会转到整个try语句后的语句

    finally语句必须在catch 子句后面

    try必须, catch和fianlly可选.

    */

    //Programme 1:

    public class TestException

    {

    public static void main(String[] args)

    {

    //处理例外机制1:捕获例外

    try

    {

    int a=0, b=0;

    a /=b;

    }

    /*在catch块中是对例外对象进行处理的代码,与访问其它对象一样,

    可以访问一个例外对象的变量或调用它的方法.getMessage( )是类

    Throwable所提供的方法,用来得到有关异常事件的信息,类Throwable

    还提供了方法printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容

    */

    /*捕获例外的顺序和catch语句的顺序有关,当捕获到一个例外时,

    剩下的catch语句就不再进行匹配.因此,在安排catch语句的顺序时,

    首先应该捕获最特殊的例外,然后再逐渐一般化.也就是一般先安排子类,

    再安排父类.

    */

    catch (ArithmeticException e)

    {

    e.printStackTrace(System.out);

    }

    /*当捕获到一个例外时,剩下的catch语句就不再进行匹配,

    所以下面的catch语句不执行

    */

    catch(RuntimeException e)

    {

    System.out.println(e.getMessage());

    }

    }

    }

    /*result:

    java.lang.ArithmeticException: / by zero

    at TestException.main(TestException.java:9)

    */

    //Programme 2:

    class Test

    {

    public int devide(int x, int y) throws DevideByMinusException/*处理例外机制2:抛出例外.

    声明抛弃例外是在一个方法声明中的throws子句中指明的.

    throws子句中同时可以指明多个例外,之间由逗号隔开.

    此处的DevideByMinusException也可以改成其父类

    Exception,没有影响.*/

    {

    if (y < 0)

    /*抛出例外就是产生例外对象的过程,首先要生成例外对象,例外或者由虚拟机生成,

    或者由某些类的实例生成,也可以在程序中生成.在方法中,抛出例外对象通过throw语句实现.*/

    throw new DevideByMinusException ("cannot devided by minus");

    int result = x/y;

    return result;

    }

    }

    class DevideByMinusException extends Exception//自定义例外类必须是Throwable的直接或间接子类.

    {

    public DevideByMinusException(String msg)

    {

    super(msg);

    }

    }

    class TestException

    {

    public static void main(String[] args)

    {

    Test test = new Test();

    //方法的调用者必须了解这些例外,并确定如何正确的处理他们.

    try

    {

    test.devide(3, -1);

    }

    catch (Exception e)

    {

    System.out.println (e.getMessage());

    }

    System.out.println ("Programme is running here!");

    }

    }


查看完整版本: [-- error和exception有什么区别? --] [-- top --]



Powered by PHPWind v7.3.2 Code © 2003-08 PHPWind
Time 0.052598 second(s),query:3 Gzip disabled

You can contact us