java编译异常,运行异常的区别

来源:互联网 发布:博雅云计算 培训 编辑:程序博客网 时间:2024/05/16 04:19
public class Test {public static void main(String[] args) {// TODO Auto-generated method stubString str = null;System.out.println("abc".equals("abc"));// trueSystem.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.

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


0 0
原创粉丝点击