`
Java_admin
  • 浏览: 9821 次
社区版块
存档分类
最新评论

异常---程序员的好伙伴

阅读更多

       Exception-----异常可谓是我们程序员,在开发程序的时候,常见的伙伴,尴尬有时候,它让你苦不堪言,调试半天也弄不出错在哪里了。今天就这个问题,根据自己的开发经验,总结自己经常遇到的各种异常,仅供参考,不足之处,望见谅。大笑

 

一.NullPointException空指针异常
     1.概述:该异常经常出现,主要原因是没有正确的理解对象这个概念,我们知道,在java中只有对象才可以用来调用方法,那我们如果只是声明一个变量,就不能用来调用方法。此时调用方法就会出现空指针异常。
     2.处理办法:我们只需要找到跑出异常的那一句话,然后找到相应的变量,最后,让该变量指向一个对象就可以了。
 3.例句:

public class ExceptionTest {
	public static void main(String[] args) {
		//NullPointException,空指针异常
		String str = null;
		str.length();
	}
}

 

4.抛出异常,
 Exception in thread "main" java.lang.NullPointerException
 at study.exception.ExceptionTest.main(ExceptionTest.java:5)。
 也就是str.length(),这一句话。我们发现,str是一个空的对象。在这里只需要给str一个值就可以了。(String 类比较特殊)

 

二.NumberFormatException 字符串转换异常
 1.概述:应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
 2.处理办法:根据不同的题意,看看这个方法适合什么范围的树枝转换
 3.例句:

public class ExceptionTest {
        public static void main(String[] args) {
	//NumberFormatException,字符串转换成一种数值类型出现异常
	String str = "123abc";
	int s = Integer.parseInt(str);
            }
}

 

4.抛出异常:
 Exception in thread "main" java.lang.NumberFormatException: For input string: "123abc"
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
 at java.lang.Integer.parseInt(Integer.java:492)
 at java.lang.Integer.parseInt(Integer.java:527)
 at study.exception.ExceptionTest.main(ExceptionTest.java:5)
 我们知道,parseInt(),转换的范围是str中的字符必须是0-9之间的,修改一下范围即可,我们明白,出现这个异常后,我们要立即查看这个函数适合的范围对不对。

 

三.ClassCastException  强制转型出现的异常
 1.概述:当试图将对象强制转换为不是实例的子类时,抛出该异常。
 2.处理办法:查看该类型和转换以后的类型是不是“父子关系”,如果不是,则转型失败。
 3.例句:

public class ExceptionTest {
 	 public static void main(String[] args) {
   	//ClassCastException,父类向下转型的时候,会出现这个异常
   	Object obj = new JTextArea();
   	JButton jb = (JButton)obj;
  	}
 }

 

4.异常:
 Exception in thread "main" java.lang.ClassCastException: javax.swing.JTextArea cannot be cast to javax.swing.JButton
 at study.exception.ExceptionTest.main(ExceptionTest.java:4).向下转型的基础是,两个类型必须是父子类的关系,
 才有可能转型,即使如此,有时候,强制转型有时候也会出现错误。

 

四.IndexOutOfBoundsException 数组越界异常
 1.概述:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
 2.处理办法:这里我们看看抛出的异常的后面,会标明是数组是哪个位置越界了,我们找到这个位置,将数目改变一下即可。
 3.例句:
 

public class ExceptionTest {
  	public static void main(String[] args) {
   	//IndexOutOfBoundsException,数组越界,会出现这个异常
   	int[] a = new int[10];
   	a[10] = 10;
 	}
 }

 

 4。异常:
 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
 at study.exception.ExceptionTest.main(ExceptionTest.java:5)
 异常中有个10,表明,我们这个数组的第10个位置的时候越界了。我们就知道该如何处理了。

 

五.NoSuchFieldException 没有这个字段异常
 1.概述:类不包含指定名称的字段时产生的信号。
 2.处理办法:这个经常用于文件的操作过程当中,我们要打开一个文件,但是该文件不存在,就会抛出这个异常
 3.例句:
 

public class ExceptionTest {
  	public static void main(String[] args) {
   		//NoSuchFieldException,数组越界,会出现这个异常
   		try {
   		 FileOutputStream file = new FileOutputStream("111");
   		} catch (FileNotFoundException e) {
   		 e.printStackTrace();
   		}
  	}
 }

 

4.异常,这里如果是在eclipse开发的话,会给你主动提示,这里是要捕获没有这个文件的异常

 

六.NoSuchMethodException没有这个方法的异常
 1.概述:无法找到某一特定方法时,抛出该异常。这里就不做过多的描述了,很简单,找到看看这个方法是不是存在。
 
总结:异常是我们在编程不时候,很容易遇到的事情,我们需要灵活的学会捕捉这个异常,处理方法:
   1.一般我们用这个方法来进行处理:
 

try{
    可能出现异常的代码
  }catch(Exception e) {
    捕获后处理的办法,经常用e.printStackTrace();这个方法来打印异常的详细信息
  }finally {
    不管是不是捕获到了异常,这里都会执行
 }

 
      2.还有另一种方法,直接throws将相应的异常抛出,不过这个在大型的编程项目里,会比较麻烦。
只要是调用了这个方法的方法,我们要不断的抛出异常。

      大家一起加油,争取早日交到异常这个好朋友!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics