前天参加java的笔试 回来后晕晕的 所以有了以下疑问
首先java的异常发生 是在运行期间吧?
其次对于   编译报错 和 运行期间报错怎么区分.
能否给个归纳 或者 提示.

解决方案 »

  1.   

    编译报错?
    1 你的代码不符合java的书写要求,语法错误
    2 你需要的类库没有找到
    3 某些可以预见的错误你没有处理,比如网络断开,数据库操作异常SQLExeption 等运行错
    1 你的代码没有语法错误
    2 你的某些错误,比如除以0,只有在运行的时候才可能发生
    3 某些意外的发生,比如 空指针 nullpointerexception
      

  2.   

    Java语言是运行期绑定的,你定义的Class如果未被使用,即使编译过后运行期也不会被加载的所以编译器报错多半只是检查语法而已,另外会预先存储字符串等字面量,以方便运行期间更快的调用
    而运行期报错是真正用到了Class的方法时才会发生举个简单的例子:    public class Test{
    public static A a;
            public static void main(String[] args){
                try{
    A.class.newInstance();
        }catch(Exception e){}
                
                //A aaa;
                //aaa.hello();
        a.hello();
            }
        }    class A{
            static{
        System.out.println("Load class A");
                double x = 3.0;
                double y = 0.0;
                System.out.println(x/y);
            }        public void hello(){
                System.out.println("Hello");
            }
        }
    建议在命令行用 java -verbose Test 来运行,可以清楚的看到JVM何时加载哪个类进来编译期异常就是注释掉的两行如果恢复,会无法通过编译,因为编译器警告局部变量没有初始化
    运行期异常就是程序正常跑起来之后由于a没有初始化,调用a的hello方法抛出的空指针异常加了一个static块是想告诉你何时会初始化静态资源,真正实例化A的对象时才会初始化这个静态区域
      

  3.   

    编译出错:假如你是在ide上开发的话,会给你错误竟高的,就是语法上的错误!比如说,某个类找不到阿,类型转换阿,之类的,这是由编译器来工作!运行出错:是在程序跑的时候出错的,毕竟java是动态机制,所以有它来解决编译器没解决的错误,这是jvm来工作!
      

  4.   

    火龙果前辈,Java中除以0只有一种情况下才会抛出异常哦那就是int值除以int 0的时候,才会抛出异常double值除以int 0
    int或者double值除以double 0.0都不会抛出异常的,或者是Infinity,或者NaN等等
      

  5.   

    编译期异常是指一些在代码里面不明确捕获就会编译出错的异常,比方说SQLException而运行期异常是指只有在程序运行起来才会抛出的异常,比方说NullException,OutOfIndexException等
      

  6.   

    你说得很对,因为double只是无限接近0而已,不过你太较真了。呵呵,向你学习
      

  7.   

    编译出错:假如你是在ide上开发的话,会给你错误竟高的,就是语法上的错误!比如说,某个类找不到阿,类型转换阿,之类的,这是由编译器来工作!运行出错:是在程序跑的时候出错的,毕竟java是动态机制,所以有它来解决编译器没解决的错误,这是jvm来工作!
      

  8.   

    public class Test{
        public static A a;
            public static void main(String[] args){
                try{
            A.class.newInstance();
            }catch(Exception e){}
                
                //A aaa;
                //aaa.hello();
            a.hello();
            }
        }    class A{
            static{
            System.out.println("Load class A");
                double x = 3.0;
                double y = 0.0;
                System.out.println(x/y);
            }        public void hello(){
                System.out.println("Hello");
            }
        }
      

  9.   

    恩,,说的有道理。如果用ECLIPSE等编译环境,它会很好的检查你的语法错误。。
    运行的错误最典型的是空异常。null