A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张学东 中级黑马   /  2012-10-2 10:40  /  1184 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ___冬瓜_, 于 2012-10-2 10:50 编辑

今天对异常进行了一次总结和归纳,可能是和我以前的习惯问题吧,使用myeclipse直接一点就可以使用 try catch语句自动的抛出异常,知道一心想进黑马才用心的去专研了一下各种异常的情况,下面就对几种常见的异常进行一次小小的总结:     所有的异常都继承自RuntimeException类,首先是类型转换异常,这种异常发生在将一个对象转换成非继承体系上的类的时候。
    如以下代码所示:


1 package com.itmeima.zxd;

public class ExceptionDemo {
     /**
     * @author 张学东      
* 运行时的各种异常
   
*/
   public static void main(String[] args) {
         Book book=new NovelBook();
       Object o=book;
       String s=(String)o;
        System.out.println(s);
        }
}
class Book{
     private String title;
   private String content;
     private String author;
     
}
class NovelBook extends Book{
     private String type="爱情";
  public String  toString(){
        return "主题是"+type;
    }
}

   以上代码在运行时会弹出以下异常信息:
Exception in thread "main" java.lang.ClassCastException: com.itmeima.zxd.NovelBook cannot be cast to java.lang.String    at com.itmeima.zxd.ExceptionDemo.main(ExceptionDemo.java:12)
   异常ClassCastException就是类型转换异常的信息,这是由于类NovelBook可以被转换成其父类 Book (Book book=new NovelBook();)或者基类Object,但是却不能转换成String类型的对象。
   我们注意到代码System.out.println(s);并没有被执行,这是运行时异常的特点,一旦代码发生了运行时异常,就会立即停止运行并抛出异常。
   第二种常见的异常是数组访问越界的异常ArrayIndexOutOfBoundsException.这种异常在访问不存在的数组元素是发生。如以下代码所示:


package com.itmeima.zxd;
public class ArrayIndexOutOfBoundsExceptionDemo {  
  
/**  
   *
@author 張學東   
* 各种异常的总结   
  * 数据访问越界异常     
*/  
  public static void main(String[] args) {   
   
int[] i=new int[] {1,2,3,4,5};   
   
for(int j=0;j<6;j++){     
       System.out.println(i[j]);            
      }
}
}



程序运行后会抛出以下异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5    at com.itmeima.zxd.ArrayIndexOutOfBoundsExceptionDemo.main(ArrayIndexOutOfBoundsExceptionDemo.java:12)
最后一种异常是空指针异常 NullpointerException,这种异常发生在一个引用未初始化的对象的时候。如以下代码所示:

package com.itmeima.zxd;
public class nullPointerException {
  
/**   
*
@author 张学东     
*
@exception nullPointerException   
*/   
public static void main(String[] args) {      
  MyClass s
=null;   
     s.getName();   
}
}
//空指针异常
class MyClass{   
private String name;  //姓名  
  public String getName(){  //get方法        
return name;    }
public void setName(String name){  //set方法   
   this.name=name;    }
}


这段代码运行后会报以下错误:

Exception in thread "main" java.lang.NullPointerException    at com.itmeima.zxd.nullPointerException.main(nullPointerException.java:11)
这是由于MyClass类型的对象s还没有被初始化,由于系统没有为其发配内存和运算所需的资源,因此直接调用s.getName()会由于没有可供的资源而抛出异常。
  出以上异常以外,还有几种异常 暂时还没有总结出来。。。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马