您的位置:首页 > 编程语言 > Java开发

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.

编译时异常一般直接显示红线报错,而运行时异常则需要运行程序,程序报错。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息