现在的位置: 首页 > 综合 > 正文

Java中异常处理

2013年07月19日 ⁄ 综合 ⁄ 共 1701字 ⁄ 字号 评论关闭

Java中异常处理

1)  打开一个不存在的文件、网络连接中断、数组下标越界、正在加载的类文件丢失等都会引发异常。

2)  Java中的异常类定义了程序中遇到的轻微的错误条件。

3)  Java中的错误类定义了程序中不能恢复的严重错误条件。如内存溢出、类文件格式错误等。这一类错误由Java运行系统处理,不需要我们去处理。

4)  Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。

5)  Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。

6)  如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。

7)  try/catch/finally语句。

8)  对于RuntimeException,通常不需要我们去捕获,这类异常由Java运行系统自动抛出并自动处理。

9)  如果父类中的方法抛出多个异常,则子类中的覆盖方法要么抛出相同的异常,要么抛出异常的子类,但不能抛出新的异常(注:构造方法除外)。

10)  我们可以在方法声明时,声明一个不会抛出的异常,Java编译器就会强迫方法的使用者对异常进行处理。这种方式通常应用于abstract base classinterface中。

以下为简单的代码示例:

class Excep

{

       public int division(int a,int b) throws Exception,ArithmeticException

       {

              if(b<0)

                 throw new DefExcep("divisor can't be minus");

               

               return (int)a/b;

       }

}

 

class DefExcep extends Exception//自定义除数不能为0的异常

{

       DefExcep(String str)

       {

              super(str);

       }

}

 

class Test

{

        public static void main(String []args)

        {

                Excep excep=new Excep();

                try

                {

                    excep.division(5,-1);

                   

               }

              

               catch(ArithmeticException ex)

               {

                   ex.printStackTrace();

               }

              

               catch(DefExcep e)

               {

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

               }

              

               catch(Exception e)

               {

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

                    //System.out.println(e.toString());

                    e.printStackTrace();

               }

              

               finally// finally中的代码不管有没有异常处理都会执行

               {

                   System.out.println("The programme is ended");

               }

              

       }

}

抱歉!评论已关闭.