您的位置:首页 > 其它

补疑(编译错误VS运行错误)

2007-02-21 23:08 274 查看
关于这个问题,很多人都觉得很简单,认为语法有问题的是编译时错误,逻辑上出现混乱了,造成得到的结果不是自己想要的就是运行错误,那么看看下面一段代码:
public class ErrorTest{
    public void myMethod(String s){
        System.out.println("My String");
    }
 
    public void myMethod(StringBuffer s){
        System.out.println("My StringBuffer");
    }
 
    public static void main(String args[]){
        ErrorTest et = new ErrorTest();
        et.myMethod(null);
    }
}
这是一个简单的方法重载,单从语法上说,重载使用的没有错,方法名重复,参数类型不同,可以区分这两个重载方法,那么程序编译应该没有问题了,结果一编译,发现竟然编译不过去,因为在下面的方法调用当中,编译器不知道该调用哪个方法了,这时,一个没有语法错误的逻辑错误就成为了一个编译错误,这时候在调用myMethod方法的参数中放入一个String或者StringBuffer就可以通过编译并且可以运行了,可见,编译错误也有可能是用法出现了错误。那么该如何区分是编译错误呢还是运行错误呢,如果单说编译错误就是编译的时候出现错误,运行错误是运行是出现错误好像有点废话的感觉,在最后要总结性的区别两者,我现在的理解是编译错误是编译时不能通过,是语法或者用法上出现了错误,如果出现编译错误,那么该代码一定不能运行,运行错误一般是逻辑上出现了错误,可以理解是抛出了一个程序员没有想到的Exception。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息