黑马程序员二、异常

 ----------- android培训java培训 、期待与您交流! ------------

对于问题的划分:两种:一种是严重的问题,一种非严重的问题。

     对于严重的,Java通过Error类进行描述。     对于Error一般不编写针对性的代码对其进行处理。

      对于非严重的,Java通过Exception类进行描述。    对于Exception可以使用针对性的处理方式进行处理。 

      无论Error或者Exception都具有一些共性内容。   比如:不正常情况的信息,引发原因等。

异常体系:

    Throwable

       |--Error

       |--Exception

           |--RuntimeException

2.异常的处理

Java 提供了特有的语句进行处理。

try

{

       需要被检测的代码;

}

catch(异常类 变量)

       处理异常的代码:(处理方式)

finally

       一定会执行的语句;

3.对捕获到的异常对象进行常见方法操作。

class Demo

{

      int  div(int a,int b)

       {

               return a/b;

        }

}

class ExceptionDemo

{

       public static void main(String[] args)

        {

              demo d = new Demo();

               try

               {

                    int x = d.div(4,0);

                    System.out.println("x="+x);

                }

                 catch(Exception e)

                  {

                          System.out.println(e.toString);

                   }

                        System.out.println("over");

           }

}

4.对多异常的处理:

1.  声明异常时,建议声明更为具体的异常。这样处理的更具体。

2.  对方声明几个异常,就对应有几个catch块,不要定义多余的catch块。

如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。

建立在进行catch处理时,catch中一定要定义具体处理方式。 

 5.自定义异常

//需求:除数为负数为异常

class FuShuException extends Exception

{

        private int value;

         FushuException()

         {   super();    }

          FushuException(String msg,ing value)

           {

                     super(msg);

                     this.value = value;

            }

          public int getValue()

             {   return  value;    }

}

class Demo

{

      int  div(int a,int b)  throws  FuShuException 

       {

             if(b<0)      

                 throw new FuShuException ("除数是负数");

               return a/b;

        }

}

class ExceptionDemo

{

       public static void main(String[] args)

        {

              demo d = new Demo();

               try

               {

                    int x = d.div(4,-1);

                    System.out.println("x="+x);

                }

                 catch(FuShuException e)

                  {

                          System.out.println(e.toString);

                           System.out.println(“除数出现负数了”);

                   }

                        System.out.println("over");

           }

}

对于异常分两种:

1.     编译时被检测的异常。

该异常在编译时,如果没有处理(没有抛也没有try),编译失败。

2.     运行时异常(编译时不被检测)(运行时异常,RuntimeException以及其子类)。

在编译时,不需要处理,编译时不检查。

该异常的发生,建议不处理,让程序停止。需要对代码进行修正。

class Demo

{

      int  div(int a,int b)  //  throws  FuShuException 

       {

             if(b<0)      

                 throw new FuShuException ("除数是负数");

               if(b==0)

                 throw new  ArithmeticException("除数为零了");  //RuntimeException异常

               return a/b;

        }

}

finally代码块:定义一定会执行的代码。通常用于关闭(数据库等)资源。

记住一点:catch是用于处理异常。如果没有catch就代表异常没有被处理过,如果该异常是检测时异常,那么必须声明。

当函数内容有throw抛出异常对象,并未进行try处理,必须要在函数上声明,否则编译失败。

注意,RuntimeException除外,也就是说,函数内如果抛出的RuntimeException异常,函数上可以不用声明。

           如果函数声明了异常,调用着需要进行处理,处理方法可以throws可以try。

异常的处理原则:

1.     处理方式有两种:try或者throws。

2.     调用到抛出异常的功能时,抛出几个,就处理几个。

一个try对应多个catch。

3.     多个catch,父类的catch放到最下面。

4.     catch内,需要定义针对性的处理方式,不要简单的定义printStackTrace,输出语句。也不要不写。

当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。

try

{

        throw  new AException();

}

catch(AException e)

{

        throw e;

}

如果该异常处理不了,但并不属于该功能出现的异常。

可以将异常转换后,在抛出和该功能相关的异常。

或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去,

当调用者知道。并处理。也可以将捕获异常处理后,转换新的异常。

try

{

        thrownew AException();

}

catch(AException e)

{

        //对Aexception处理。

        thrownew BException();

}


----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值