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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fjl_fight 中级黑马   /  2013-5-5 12:27  /  1919 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

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
                                                                ......
                                       


评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
不错。。
回复 使用道具 举报
你已经学到这后面了啊   哇咔咔   顶一个!!
回复 使用道具 举报
你的博客肯定很优秀!整理的很有价值,继续努力!
回复 使用道具 举报
同样都学习了,为什么我就做不出这么好的总结整理呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马