`
CSU-NingMan
  • 浏览: 24034 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

异常机制

 
阅读更多

 

JAVA异常机制总结



一.关于异常的基本概念



1.异常与异常处理机制:

异常: JAVA语言中,异常即指导致程序非正常结束(即中断)的指令流


异常处理机制:若没有异常处理语句,就必须使用大量的判断语句,配合所想到的错误状况来捕捉这些错误,将导致程序效率降低。异常处理机制即避免了这种缺点,又能很好的处理和捕获异常,增进程序稳定性和效率性。


2.异常的分类:

                 

Throwable 是所有 Java 程序中错误处理的父类 ,有两个子类: Error 和 Exception 


Error :一般指JVM错误,程序中无法处理


Exception :可以被捕获和处理,可以大致分为      运行时异常-------强制异常

           

运行时异常( runtime exception),出现此种异常可以不处理。

                       常见有:数组下标越界              ArrayIndexOutOfBoundsException 

                                       类型转换异常                  ClassCastException

                                       空指针  NullPointerException    。。。。。。

         

强制异常(runtime exception , checked exception ), 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。面对这种异常不管我们是否愿意,只能自己去写一大堆catch 块去处理可能的异常。 

                        常见有:文件不存在 UnsupportedOperationException

                                        参数为负数 IllegalArgumentException

                                        算术错误  ArithmeticException。。。。。。




三.异常信息的分析与程序调试


 1) 通过大量的System.out.println语句插入到程序中,输出变量值或其他信息,供程序员判断程序

  并找到异常出错的地方进行改正,即利用异常处理机制进行异常捕获。


 2)执行步骤:


         a.根据异常类名,在JDK中进行查询确定异常的类型

         b.找到出错的位置,根据提示信息,找到第一个与自己定义的类名相同的行,即确定异常出现的位置

         c.分析代码,在异常出现的上一行输出变量值等。

         d.修改代码,处理异常



四.处理异常的方法


1)捕获处理异常


具体用法如下:


  try{

              出现异常的代码;

}catch (属于异常的种类){

                 处理异常的语句

}

finally{ 异常的统一出口

             }



注:此种方式可以用来捕捉单个异常,若要处理多个异常,可以使用多个catch语句,或者为节省语句在catch的方法体中写多个执行语句。但此时,只可能发生一种异常,因为在try语句中一旦捕获到异常语句就停止以下的造操作。




2)抛出异常


    a.   throws 关键字--------定义方法时用throws声明表示不处理异常,而交给方法的调用处进行处理,使用格式如下:

           public 返回值类型 方法名称(参数列表)throws 异常类{

                                                                              }

  注:若出现以下情况,程序中主方法中可以不使用try...catch进行异常捕获与处理,但轻易不要这样使用


                        public class Student{

                                       public static void main(String args[])throws Exception{

                                                   Student student  =new Student() ;

                                                                 student.方法名();}



  b.throw关键字-----------使用throw关键字人为的抛出一个异常,直接抛出异常类的实例化对象即可。


                public class ThrowDemo{

                                      public static void main(String args[]){

                                                    try{

                                                              throw new Exception("自己抛出的异常!");

                                                          }catch (Exception e){

                                                             System.out.println(e); 

                                                         }

                                                  }

                                            }




运行结果:java.lang.Exception:自己抛出的异常!



五.实际使用时注意



    异常不需要一味处理或完全不管不顾就往外抛,通常情况下,身为程序员开发程序写软件时,就必须使用try...catch语句处理异常,而在写第三方插件时,就往外抛,谁来使用就谁来处理。





 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics