Java学习之路(七)

1:什么是异常?  

   中断了正常指令流的事件。

  异常是一个对象 ,在出现异常时,虚拟机会生成一个异常对象

  生成对象的类是由 JDK 提供的

    

  上图解释:

    Throwable 是所有异常类的基类

    Error  是指虚拟机在运行时产生的错误,在出现错误时,虚拟机会关闭

    Exception  指异常

    RuntimeException   运行时异常(也可称为  uncheck Exception )、

    e.g :

class Test{
    public static void main(String args[]){
        int i= 1/0;
    }
}

 

错误信息:

        

错误解释:

在主线程中出现异常   名字为ArithmenticException  即算术异常

:后面为 异常的信息  at后表示位置

 ....   代表 check Exception  编译时就会出错

    e.g:

    

class Test{
    public static void main(String args[]){
        Thread.sleep(1000);
    }
}

 

 

   

2:为避免不友好的错误 ,提高程序的健壮性

引入了try catch() finally

代码:

class Test{
         public static void main(String args[]){
                   try{
                            System.out.println("1");
                            int i = 1/0;                           
                            System.out.println("2");
                   }
                   catch(Exception e){
                            e.printStackTrace();                       
                            System.out.println("3");
   }
finally{ System.out.println("4"); } } }

 

 

  易错的代码放在try里  错误处理放在catch里    finally里放清理资源的代码

 

3:自定义错误处理

thorw

class Test{
    public static void main(String args[]){
        User aUser = new User();
        aUser.setAge(-20);
    }
}


 class User{
     private int age;
     
     public void setAge(int age){
         if(age<0){
             RuntimeException e = new RuntimeException("年龄不能为负数");
             throw e;
         }
         this.age = age;
     }
 }

 

 


 

throws

声明可能会产生异常  谁调用谁处理

class Test{
    public static void main(String args[]){
        try{
            User aUser = new User();
            aUser.setAge(-20);
        }
        catch(Exception e){
            System.out.println(e);
        }
    }
}

 class User{
     private int age;
     
     public void setAge(int age) throws Exception{
         if(age<0){
             Exception e = new Exception("年龄不能为负数");
             throw e;
         }
         this.age = age;
     }
 }

 

 

 

   

 

  

posted @ 2015-03-31 20:39  李_鹏  阅读(146)  评论(0编辑  收藏  举报