`
Chang0501
  • 浏览: 23776 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

对Java异常的一些理解

阅读更多

      程序的错误,一种是编译错误,在像eclipse这种时时编译的开发平台上,这一类错误是比较好解决的。另一种是在程序运行时才发生的错误。也就是我们所说的异常。

      通常造成异常的原因有两个:一是编程者自身不可预料的逻辑错误,二是可以提前预料的系统自身问题。

 

一、异常的分类

     逻辑错误一般是由于程序员在设计时采用不当的方法所造成的。比较常见的有空指针异常(NullPointerException)和数组下表越界异常(ArrayIndexOutOfBoundsException),下面两段代码便可以验证。

public static void main(String[] args) {
      //定义一个字符串变量但是不赋值
    String str = null;
      System.out.println(str.equals("abc"));
}	
public static void main(String[] args) {
		
        //定义一个数组,长度为3
       int[] arr = new int[3];
       System.out.println(arr[3]);

}

      由于这种异常是程序员自身不当的设计所造成的,因此系统自身没有将可能发生的异常抛出。而是在系统内部已经处理了。

      另一种由于系统自身问题出现的异常,如:内存空间不足,而程序运行中提出的内存分配得不到满足,就会发生异常;在硬盘上的文件被挪离,导致程序运行文件中文件打不开而发生异常。这些问题,编程者都可以事先预料到,但是不能避免,因为你很难得知此时真正的内存情况或是文件的准确位置。Java文件操作当调用creatNewFile()函数时编译器会提示还有没有解决的异常,此时说明系统将这一类异常抛出,让给程序员自行处理了。

 

二、异常的处理

      以上是异常的分类,下面来谈谈异常处理。首先一个软件很难一次性做到尽善尽美,因此在用户使用的时候难免会出现一些由于异常而造成的错误。我们能做的就是将这些异常控制住,在它出现时用户能够明白,而不是看着黑色的命令行发呆。(就像在一个计算器中,用户输入了10/0,出现的是一行提示,告诉用户除数设不能为零,而不是出现一行ArithmeticException :/ by zero)。这便是异常处理的意义。在可能出现异常的地方通过try块捕获以及catch解决。

      当然,有时学习系统抛出异常的方法也是有必要的,假设要在一处对一些异常进行统一处理,可以通过throws将异常抛出,这种抛出指的是将异常抛给调用出现异常函数的函数中,也就是层层上抛。但是最终还是要将其解决的。看下面两种情况。



 程序中出现了异常。



 将异常抛出,程序员在这里就可以不用处理异常了,但我们来看看另一个地方


 

      在抛异常函数的调用处,也就是是它的上级出现了问题,因此异常是可以层层上抛,但还是最终要对它进行处理的。

 

      上述是对异常概念的理解以及异常处理的简单方法,异常是程序设计中的一个大问题也是大学问,要深刻地了解异常,熟练地处理异常还需要下大工夫学习,更重要的是在平时的编程中多加积累这一方面的经验。

 

  • 大小: 11.7 KB
  • 大小: 13 KB
  • 大小: 9.7 KB
0
1
分享到:
评论
1 楼 yuanzhifei89 2011-04-30  
感觉有时候很难确定该不该抛异常,比如说:从服务器获取xml并将其解析为对象后,对于其中为null的对象是该检查它是否为null呢,还是定义一个ObjectNullException呢。很纠结

相关推荐

Global site tag (gtag.js) - Google Analytics