java----异常

<---百草枯--->

qq:916923477--maooam;

异常

1、异常的定义:

                就是程序不是按照正常的执行流程而突然终止程序继续往下执行。

2、异常的分类:

        2.1、程序运行时出现异常(unchecked Exception),终止程序(把异常报告给用户,这是很要命的事情),在编译时编译器不会对其进行检测,这是未检测异常,属于未检测异常RuntimeException的子类。(“未检查的异常”可在程序中编写代码来将这种异常避免(除0, 越界等))

        2.2、在编译程序时出现异常(把异常报告给程序员),在编译时编译器会对其进行检测,如果没有对异常进行处理,就会终止编译,是属于编译时可检测异常(checked Exception),是非RuntimeException的子类。(”已检查异常“如果没有对它进行处理,则在编译时会发生错误(文件,网络等))

3、异常的处理:

        3.1、(抛出不做处理)在本方法调用其他方法(该方法可能会有异常产生,而且也抛出了异常)时,如果本函数不想对异常处理,可以继续向上抛出异常,让调用本函数的函数来处理,但这是极其不负责的行为,如果上面的函数又不处理,继续抛出,直到之后都没有函数去处理,这时候是就会抛给系统,系统会直接终止该应用,这时就会把整个异常暴露给用户了,这对程序员是很要命的事清。例如:

public class ThrowExceptionDemo{    

     public static void main(String[] args) throws Exception{         

      test();

        }        

   static void test() throws Exception{            

    double a=2.0/0;            

    if(String.valueOf(a).equals("Infinity")){                

      throw new Exception("by zero exception");               

    }               

    System.out.println(a);           

    }

}

 

        3.2、程序员自己进行捕捉异常(try 、catch、finally)。例如:

public class ExceptionExam{        

    public static void main(String args[]){            

       int a,b;            

      double c;            

       try{                    

        a = Integer.parseInt(args[0]);                    

        b = Integer.parseInt(args[1]);                       

        c = a/b;                    

        System.out.println(a + "/" + b +" = "+c);             

      }catch(RuntimeException e){                    

        System.out.println(e);             

      }             

      System.out.println("game over.");        

    }

}

 

4、异常的抛出方式:

        4.1、系统抛出:

                    在java的世界里,大部分的异常都是由系统抛出的。

        4.2、由程序员抛出:

                    程序员自己抛出异常时用到一个关键字是:throw 异常对象。例如:

static void test() throws Exception{     double a=2.0/0;     if(String.valueOf(a).equals("Infinity")){            throw new Exception("by zero exception");         }        System.out.println(a); }

 

5.1、异常的声明:throws 异常类    (异常类如果是非检查的异常类编译器编译会忽略检查.).

例如:

static void test() throws Exception{}

 

5.2、异常的抛出:throw 异常对象 。例如:

throw new Exception("by zero exception");

 

6.1、可以对下列情形在方法定义中抛出异常:

        方法中调用了一个会抛出“已检查异常”的方法

        程序运行过程中发生错误,并且用throws字句抛出了一个“已检测异常”

6.2、 不要抛出如下异常:

        从Error中派生的那些异常

        从RuntimeException中派生的那些异常,如NullPointerException等。。。

7、异常的生命周期:

        捕获一个异常又抛出另一个异常,并把原始异常的信息保存下来,调用栈的信息,异常将沿调用链一直前进,直到被捕获或是程序结束前进。

 

 

注意:

        异常处理最好只用于错误处理,不应该用于程序业务逻辑,因为异常产生要消耗资源。。

posted on 2013-08-17 00:07  Jason-liang  阅读(252)  评论(0)    收藏  举报

导航