java编译异常,运行异常的区别
2016-04-10 10:06
495 查看
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub String str = null; System.out.println("abc".equals("abc"));// true System.out.println(str.equals("abc"));// java.lang.NullPointerException } }
1.
编译出错差不多就是语法不对,比如你写String str = 'str';这么写语法不对编译就会出错。
运行出错是指语法没问题但是逻辑有问题,比如一个方法传进一个String类型的变量str,方法体中有类似于str.equals("str");的语句,但是传进的str是个null,那么那一句就相当于null.equals("str");这肯定会抛空指针异常。 用手机做例子,编译出错就是手机在生产的时候零件不对,那就肯定不能出厂。运行出错就是手机组装完出厂了,到手了你没用来打电话,直接拿来砸核桃了,那手机肯定报废(NOKIA除外)。
2.
比如说你把 for 写成了 fot 的话就会产生编译错误。编译错误一般是语法错误
而运行错误是指,在运行期间(此时已经没有编译错误了)产生的错误,比如说,计算 5 / 0 什么的。
3.
编译错误一般是指语法错误,比如说没加分号,少写了括号,这都属于编译错误。
运行错误一般是程序通过编译没有发生错误,但是程序执行的时候遇到了某些阻碍,比如说你要读取一个文本,但是该文本不存在,这就属于运行错误,因为你的语法本身没有错误,所以编译正常通过,但是系统找不到你的源文件,所以会出现运行错误。
4.
首先,运行时的错误不是语法错误。运行时错误叫做runtime Exception,是一种逻辑上的错误,主要有数组下标越界,空指针异常,除零异常等。在这里给你一个简单的例子。 public class RuntimeException { public static void main(String[] args) { int[] arr = new int[2]; for(int i = 0; i < arr.length; i++){ arr[i] = i;} for(int i = 0; i < 3; i++){ System.out.println("arr["+i+"] = "+arr[i]);}}} 这个简单的例子就会出数组下标越界的运行时异常。 而语法错误时对应于语言本身的,一般会在编译时就会发现,如果你用工具的话,是可以在书写过程中就可以发现的。
5.
String
value = null;
int len = value.length();
会抛出NullPointerException
6.
编译时异常一般直接显示红线报错,而运行时异常则需要运行程序,程序报错。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树