当前位置:首页 » Java基础教程 » Java Exceptions异常

Java Exceptions异常

Java Exceptions异常用法实例

Exceptions

Throwable

Exception

Error

RuntimeException

ClassNotFoundException


IOException

SQLException

IndexOutOfBoundsException

ClassCastException

NullPointerException

OutOfMemoryError

StackOverflowError

NoClassDefFoundError

Java采用违例(Exception)处理机制来进行错误处理。 违例机制的一个好处就是能够简化错误控制代码, 我们再也不用检查一个特定的错误, 然后在程序的多处地方对其进行控制。 此外, 也不需要在方法调用的时候检查错误(因为保证有人能够捕获这里的错误)。 我们只需要在一个地方处理问题:”违例控制模块”或者”违例控制器”。 这样可有效减少代码量, 并将那些用于描述具体操作的代码与专门纠正错误的代码分隔开。

一个完整的违例例子:

public void throwTest() throws MyException {

try {

        ...

} catch (SQLException se) {

        cat.error("", se);

        throw new MyException(se.getMessage());

} catch (Exception e) {cat.error("", e);

} finally {

        ...

}

}

如果一段代码有可能会抛出违例可以用try {} catch {}来处理。 被catch到的违例可以再抛出, 也可以转换为其它类型的Exception抛出。 finally块里面的代码总会被执行到的, 不管前面是否已经throw或return了。

Throwable是所有违例的基类, 它有两种常规类型。 其中, Error代表编绎期和系统错误, 我们一般不必特意捕获它们。 Exception是可以从任何标准Java库的类方法中掷出的基本类型。

看上面的图, 如果是Error的子类或是RuntimeException的子类这种违例有一定的特殊性, 可以说我们可以当它们不存在, 当这种违例抛出的时候, 我们可以不catch它, 也可以不在方法上throws它。 RuntimeException一般代表的是一个编程错误, 是完全可以避免的。


性能注意点: 因为使用了Exception之后是要影响一些效率的, 所以Exception不能滥用。一般的不要用Exception来控制业务流程, 其次不要循环体内使用。

技巧:我们可以从Exception或直接从Throwable继承写我们自己的Exception, 然后根据业务需要抛不同种类的Exception。