java吧 关注:1,295,998贴子:12,832,624
  • 12回复贴,共1

关于垃圾语句的不解,版主别删我帖子了,我真是找不到答案了

只看楼主收藏回复

为什么第一种编译失败,第二种能够通过
有人说第一种里的System.out.println("A")是垃圾语句,那么第二种里的
System.out.println("A") 却不是垃圾语句,垃圾语句是怎样判断与定义的呢???
我在网上搜了 真没有,所以才来这里问问大家,版主留情不要删啊
第一种:
class Demo
{
public static void fun()
{
try
{
throw new Exception();
System.out.println("A");
}
catch (Exception e)
{
System.out.println("B");
}
}
public static void main(String[] args)
{
try
{
func();
}
catch (Exception e)
{
System.out.println("C");
}
System.out.println("D");
}
}
第二种:
class Demo
{
public static void showExce()throws Exception
{
throw new Exception();
}
public static void main(String[] args)
{
try
{
showExce();
System.out.println("A");
}
catch (Exception e)
{
System.out.println("B");
}
finally
{
System.out.println("C");
}
System.out.println("D");
}
}
为什么第一种编译失败,第二种能够通过
有人说第一种里的System.out.println("A")是垃圾语句,那么第二种里的
System.out.println("A") 却不是垃圾语句,垃圾语句是怎样判断与定义的呢???
我在网上搜了 真没有,所以才来这里问问大家,版主留情不要删啊



1楼2012-09-04 10:01回复
    这么多try catch


    IP属地:北京2楼2012-09-04 10:02
    回复
      2026-01-27 17:46:14
      广告
      不感兴趣
      开通SVIP免广告
      有人删了你的帖子么?


      IP属地:江苏3楼2012-09-04 10:03
      收起回复
        1L就这么多代码……度娘删的吧。


        4楼2012-09-04 10:03
        收起回复
          这是异常处理机制,第一种因为在foo()方法里写了catch,所以会直接在方法里处理掉。
          第二种,showExce用的是public static void showExce()throws Exception,本身没有处理语句,会向上抛。此时编译器不知道会不会产生这个异常,这个叫运行时异常。编译器认为后面的语句有可能会执行。所以不是垃圾语句


          IP属地:北京6楼2012-09-04 10:34
          收起回复