这段代码 有个明显的死循环
当我没有用 try catch 的时候系统提示我
错误 有无法访问的语句 System.out.println("ccc");
这个能够理解 因为永远不会执行到这里但是当我用 try catch 如图 所示 居然能通过编译
只是在运行是 跳出OutOfMemoryError(这个好理解)只是不能理解的是 try catch 语句是怎么让一个错误 通过编译的 谢谢

解决方案 »

  1.   

    import java.util.*;
    public class Test{
    public static void main(String[]args){
    ArrayList mylist=new ArrayList();
    int a=0;
    try{
    while(true){
    mylist.add("s");}
    }
    catch(Exception e){}

    System.out.println("ccc");
    }
    }
    图裂了 手动补上
      

  2.   

    Test.java:9: 错误: 无法访问的语句
                    System.out.println("ccc");
    这是不加 try catch 的E:\javatest>java Test
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    加了以后 编译通过 运行这样
      

  3.   

    一般程序碰到错误就停止了,而 try.catch这个东西可以执行错误语句后面的代码,就是说将程序执行完,并不是让错误语句通过编译
      

  4.   


    因为 try catch本身有处理错误机制,所以编译器会忽略其中的错误,让try。。catch自己处理。
      

  5.   

    编译并不能知道循环里是否换抛出异常,如果会抛出异常那么catch中的打印是会执行的
      

  6.   

    OutOfMemoryError 是运行时异常,即使不捕捉异常,编译也可以通过