Java 之异常与错误的区别及 java 的异常体系
2011 年 02 月 21 日 00:00 来源:比特网 作者:悠虎
[导读]异常: 在 Java 中程序的错误主要是语法错误和语义错误,一个程序在编译和 运行时出现的错误我们统一称之为异常,它是 VM(虚拟机)通知你的一种方式,通过这种 方式,VM 让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它。 异常和错误的区别 异常: 在 Java 中程序的错误主要是语法错误和语义错误, 一个
程序在编译和运行时出 现的错误我们统一称之为异常,它是 VM(虚拟机)通知你的一种方式,通过这种方式,VM 让 你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它。Java 中使用异常类来 表示异常,不同的异常类代表了不同的异常。但是在
Java 中所有的异常都有一个基类,叫 做 Exception。 错误: 它指的是一个合理的应用程序不能截获的严重的问题。 大多数都是反常的情况。 ”, 错误是 VM 的一个故障(虽然它可以是任何系统级的服务)。所以,错误是很难处理的,一般 的开发人员(当然不是你)是无法处理这些错误的。比如内存溢出; 和异常一样,在 Java 中用错误类来表示错误,不同的错误类代表了不同的错误。 但是在 Java 中所有的错误都有一个基类,叫做 Error。 综上, 我们可以知道异常和错误最本质的区别就是异常能被开发人员处理而错误时
系统 本来自带的,一般无法处理也不需要我们程序员来处理。 异常的分类 在 Java 中异常分为两大类:编译异常和运行异常 运行异常即是 RuntimeException;其余的全部为编译异常 JAVA 中的异常体系 在 Java 中异常 Exception 和错误 Error 有个共同的父类 Throwable.
三、runtimeException 几个子类的具体介绍 1、 java.lang.ArrayIndexOutOfBoundsException 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。 2、java.lang.ArithmeticException 算术条件异常。譬如:整数除零等。 3、java.lang.NullPointerException 空指针异常。当应用试图在要求使用对象的地方使用了 null 时,抛出该异常。譬如: 调用 null 对象的实例方法、访问 null 对象的属性、计算 null 对象的长度、使用 throw 语 句抛出 null 等等 4、java.lang.ClassNotFoundException 找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历 CLASSPAH 之后找 不到对应名称的 class 文件时,抛出该异常 注意: 编译时异常其实是可以这么理解: 你的代码本身没有问题 (运行时异常是你的代码本身 有问题),但是代码里如果含有处理文件流(这里只是举个例子,还有很多类似的其它的情 况)的时候,java 规定,遇到这种情况,必须要在代码里强
制抛出可能遇到的文件流异常, 你可以在方法开头就 throws,或者在 catch 后面进行捕获。其实代码本身逻辑跟语法都是 没
问题, 但是文件流这种操作本身会存在潜在的问题与风险, 这种问题是与你的代码无关的, java 会强制要求在代码里作出预期处理。也就是刚才说的要么在方法开头就 throws 可能遇 到的文件异常, 要么就去 catch 后面捕获具体的文件异常。 如果你在代码里不做这样的处理, 运行代码后,控制台就会输出错误。代码一样跑不起来。
还有一点要补充一下。。你写的代码,若在 Eclipse 里直接出现红 XX,这表示你的代 码有 error,这不属于 exception,这是错误,不是异常。。错误跟异常是两个概念。异常 是不会直接出现红 XX 的,只有运行时才会出错。