详解Java异常处理——简介

什么叫异常

异常也叫例外,它是超出程序正常执行流程的某些特殊状况。它与错误不同,出现异常并不是说程序错了。比如:添加用户操作,我们的本意是添加一个用户,但假如此用户已存在,我们不能重复添加。那么,这就是异常的一种,但我们不能说这是错误。


为什么要处理异常

1、异常处理使得应用程序不至于出现问题就崩溃,增强了程序的健壮性。
2、“时时刻刻为用户着想”是每个程序员的职责,我们不能让用户看到他们不懂的信息,而应该给人家一个友好的提示。
3、安全性。尽量少的暴露系统信息,防止不法分子利用这么信息对我们进行攻击。

异常的分类

详解Java异常处理——简介_第1张图片

Throwable

Java语言中所有错误或异常的超类


Error

Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,一般我们的应用程序是无能为力的。对于这类错误,我们可以了解,但具体编写代码时,忽略即可。

Exception

Exception是可以从任何标准Java库的类方法、自己的方法以及运行时任何异常中抛出来的异常的基类型。它包括执行异常(RuntimeException)和检查异常(Checked Exceptions)两种。

Checked Exceptions

Checked异常都是可以被处理的异常。这种异常的产生分两种情况:一是程序员调用会抛出异常的库函数(库函数的异常由库程序员抛出);二是客户程序员自己使用throw语句抛出异常。Checked异常必须被显式处理,如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。


我们比较熟悉的Checked异常有
Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.SQLException

runtimeException

运行时异常,不需要由程序员显式的抛出,一旦出现错误,相应的异常会被自动抛出。出现RuntimeException异常,一定是程序存在逻辑错误,要对程序进行修改。


我们比较熟悉的RumtimeException类的子类有
Java.lang.ArithmeticException
Java.lang.ArrayStoreExcetpion
Java.lang.ClassCastException
Java.lang.IndexOutOfBoundsException

Java.lang.NullPointerException


小结

RuntimeException与Error是unChecked Exception,可以在任何代码中产生,不需要由我们显式抛出。遇到Error,我们一般是无能为力的。遇到RuntimeException,相应的异常会被自动抛出。所以只有Checked Exceptions才是我们所关心的,程序应该且仅应该抛出或处理这类异常。 

注意事项

虽然异常给我们带来了各种好处,但我们也不能过度使用异常 。相对而言,异常机制的效率还是比较差的。对于应该声明方法抛出异常还是在方法中捕获异常?遵循一个原则:捕捉并处理那些知道如何处理的异常,而传递那些不知道如何处理的异常。

至于java中具体如何使用异常处理,待下篇博客细讲。


你可能感兴趣的:(Java,SE)