黑马程序员技术交流社区

标题: 第三贴之异常具体代码(中) [打印本页]

作者: fjl_fight    时间: 2013-5-5 12:27
标题: 第三贴之异常具体代码(中)

12、异常的好处:

(1)将问题进行封装。

(2)将正常流程代码和问题处理代码相分离,方便于阅读。

注意:(1)catch是用于处理异常。如果没有catch就代表异常没有被处理过,如果该异常是检测时异常。那么必须声明(抛出)。

(2) ①finally中定义的通常是关闭资源代码。因为资源必须释放。

②finally只有一种情况不会执行。当执行到System.exit(0);fianlly不会执行。

如:

try{

… …

//正常执行到System.exit(0);

System.exit(0);

}catch(){

}finally{}

(3) 异常在子父类覆盖中的体现:

①子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。

②如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。

③如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。

如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。如果抛了就会出错

即:子类不能抛出比父类更多的异常

异常测试题:
5、 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
        在try块中可以抛出异常吗?
   答:1、throws是方法抛出异常。如果一个方法可能会出现异常,
                     但是没有能力来处理这种异常,可以在方法的声明处用throws子句来声明抛出异常,可以抛出多个异常类,用逗号隔开。可单独使用。
                   如:public void show() throws Exception{}
      2、throw是语句抛出异常,是抛出异常对象,throw语句抛出的对象必须是java.lang.Throwable类或其子类的实例。
         throw要么和try...(catch)...finally一起使用,要么和throws一起使用,不可单独使用。
                                 如:
                                 public static void print2() throws Exception{
                                                        int i=1;
                                                        int j=0;
                                                        try{
                                                                 int a=i/j;
                                                                 System.out.println(a);
                                                                 throw new Exception();
                                                        }
                                                        finally{
                                                                System.out.println("finally......");
                                                        }
                                                       
                                                }
                                            调用print()输出为:
                                                                finally......
                                                                        Exception in thread "main" java.lang.ArithmeticException: / by zero
                                                                                ......
                               
      3、try:它里面放置可能引发异常的代码。
      4、catch:后面对应异常类型和一个代码块,用于表明该catch块用于处理这种异常类型的代码块,可以有多个catch块。
      5、finally:主要用于回收在try块里打开的物理资源(如数据库连接),
                                           异常机制总是保证finally块总是被执行。
                                           只有finally行完成之后,才会回来执行try或者catch块中的return或者throw语句,
                                           如果finally中使用了return或者   throw等终止方法的语句,
                                           则就不会跳回执行,直接停止。
                                           如:
                                       public String show(){
                                                        int i=1;
                                                        int j=1;
                                                        try{
                                                          //1、
                                                                 int a=i/j;
                                                                 System.out.println(a);
                                                         //3、
                                                                 return "成功";
                                                        }catch(Exception e){
                                                                e.printStackTrace();
                                                        }finally{
                                                        //2、
                                                                System.out.println("finally......");
                                                        }
                                                        return "失败";
                                           }
                         调用show(),最后输出结果为:1
                                                                  finally......
                                                                     成功
                                               

      6. 在try块中是可以抛出异常的.如:
                                public static void print2() throws Exception{
                                                        int i=1;
                                                        int j=0;
                                                        try{
                                                                 int a=i/j;
                                                                 System.out.println(a);
                                                                 throw new Exception();
                                                        }
                                                        finally{
                                                                System.out.println("finally......");
                                                        }
                                                       
                                                }
                                               
                                            调用print()输出为:
                                                finally......
                                                        Exception in thread "main" java.lang.ArithmeticException: / by zero
                                                                ......
                                       



作者: hou604720966    时间: 2013-5-5 12:45
不错。。
作者: zero727    时间: 2013-5-5 14:54
你已经学到这后面了啊   哇咔咔   顶一个!!
作者: 曹睿翔    时间: 2013-5-5 19:31
你的博客肯定很优秀!整理的很有价值,继续努力!
作者: 风乐    时间: 2013-5-7 01:59
同样都学习了,为什么我就做不出这么好的总结整理呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2