黑马程序员技术交流社区

标题: 异常练习代码 [打印本页]

作者: 张聪珉    时间: 2013-8-11 21:02
标题: 异常练习代码
  1. class Test
  2. {
  3.         public static String output="";
  4.         public static void foo(int i)
  5.         {
  6.                 try
  7.                 {
  8.                         if(i==1)
  9.                                 throw new Exception();        
  10.                         output+="1"; //throw单独存在下面有语句编译不能通过不是吗?这句话不算语句?编译可以通过?
  11.                 }
  12.                 catch(Exception e)
  13.                 {
  14.                         output+="2";
  15.                         return;
  16.                 }
  17.                 finally
  18.                 {
  19.                         output+="3";
  20.                 }
  21.                 output+="4";
  22.         }
  23.         public static void main(String args[])
  24.         {
  25.                 foo(0);
  26.                 System.out.println(output);//134
  27.                 foo(1);
  28.                 System.out.println(output); //13423
复制代码

作者: yan    时间: 2013-8-11 21:33
throws在方法声明部分使用,表示该方法可能产生此异常,如果在方法声明处使用了throws声明异常,则该方法产生异常也不必捕获,会直接把异常抛出到调用该方法的地方,如果你在方法里面使用了但如果有异常你不用抛出那么你就要用
try catch语句处理的.因此你的方法外面可以不使用throws声明异常
作者: 布易般    时间: 2013-8-11 21:38
本帖最后由 布易般 于 2013-8-11 21:42 编辑

                 try
                {
                        if(i==1)
                               // throw new Exception();     
                         {
                               throw new Exception();        //我把你的语句转化成这样,在if代码块throw下面添加一句会报错!在代码块之外,没关系哦
                               System.out.println("这句话会报错哦,编译无法通过!");
                         }   
                        output+="1"; //throw单独存在下面有语句编译不能通过不是吗?这句话不算语句?编译可以通过? //你这句话是在if代码块之外
                }


                小结:throw的【作用域范围】是在【if的代码块内】,这这个范围内,如果throw下面还有语句,编译就会通不过哦!

作者: masterV    时间: 2013-8-11 22:56
if(i==1)
        throw new Exception();
这句话其实是下面语句的简写:
if(i==1)
{
      throw new Exception();
}
这样来看的话,throw下面还有语句么?是不是单独存在的。
与君共同进步。
作者: 以防万一    时间: 2013-8-13 22:19
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作




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