补疑(编译错误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。
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。
相关文章推荐
- VS2013编译运行常见错误及解决方法
- cocos2dx在vs运行正常,在Android编译正常,运行错误的一个原因
- VS2010中程序编译生成都是正确的,直接生成的exe也是正确的,就是在VS中运行出现错误
- VS2013编译提示无法运行“rc.exe”错误
- VS2013的C++程序用VS2017运行,出编译错误
- vs2010建立win32 application 编译错误(用vc6.0建立此工程正常运行)解决方法
- VS2010中程序编译生成都是正确的,直接生成的exe也是正确的,就是在VS中运行出现错误
- Vs.net 2005编译或者运行时报“没有找到MSVCR80D.dll...”错误的解决办法
- 设置VS编译或部署时遇到错误提示是否继续运行
- VS编译问题“fatal error C1859 意外的预编译头错误,只需重新运行编译器”
- VS* 之VC 常见编译运行错误 积累
- ACE编译运行错误解决
- 在java文件编写,编译,运行各个步骤中出现的常见的错误(1)
- 运行时错误检查(/RTC)编译选项及实现原理
- 在32位系统计算机上编写的程序 (工具vs2013/2010),在64位操作系统上运行时出现缺少.dll和0x000007b错误的问题
- duilib编译错误解决方法整理 (含VS2013)
- QT程序编译无错误,运行时出现访问地址冲突
- VS2015编译的程序在其他电脑上运行不依赖VS相关运行环境
- VS2013 编译错误 MSB3758 MSB4036
- VS编译链接时错误(Error Link2005)的解决方法