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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张聪珉 中级黑马   /  2013-8-11 21:02  /  1204 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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
复制代码

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
throws在方法声明部分使用,表示该方法可能产生此异常,如果在方法声明处使用了throws声明异常,则该方法产生异常也不必捕获,会直接把异常抛出到调用该方法的地方,如果你在方法里面使用了但如果有异常你不用抛出那么你就要用
try catch语句处理的.因此你的方法外面可以不使用throws声明异常
回复 使用道具 举报
本帖最后由 布易般 于 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下面还有语句,编译就会通不过哦!

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 赞一个!

查看全部评分

回复 使用道具 举报
if(i==1)
        throw new Exception();
这句话其实是下面语句的简写:
if(i==1)
{
      throw new Exception();
}
这样来看的话,throw下面还有语句么?是不是单独存在的。
与君共同进步。
回复 使用道具 举报
亲,如问题已解决请将分类的未解决改为已解决。

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


保持队形,谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马