技术文章-异常与异常处理

在Java编程中,出现程序异常的情况很常见,可能是编译时就出现了异常,也可能是程序运行时才出现异常,出现异常不一定都是坏事,异常也是可以被利用的。

1.Java异常的关键字与作用

        try关键字:

                 首先try肯定会配合{}一起使用,我们这一部分称之为try语句块。

                 当你的代码有可能发生异常时,需要使用try语句块;将这些代码写入到try语

                 句块后,那么只要有异常发生,try就会捕获这些异常。

       

        catch关键字:

                 catch会配合(**Exception 对象名){}一起使用,这就是catch语句块。

                 catch语句块会根据try语句块捕获异常,决定交给不同的catch语句块进行

                 处理。

 

        finally关键字:

                 finally关键字会配合{}一起使用,这就是finally语句块

                 finally语句块不管是否发生异常都会执行的语句块。

                 finally语句块一般是用来执行对象或者资源的释放。

 

        try、catch、finally的使用格式:

        try {

                 ……

                         } catch (XXXXXXException e) {

                 ……

                         }

        Finally{

                 ……

                         }

 

        throw关键字:

                 throw关键字一般配合new关键字来使用,用来抛出你新建的异常对象信息。

                 throw抛出的异常需要使用throws或者try{}catch(){}来进行处理。

                

                 Throw的使用格式:

                 例如定义一个除数为零的异常:

                 a/b;

                         If(b=0){

                                  throw new MyException("除数不能是负数");

                                  }

                

        throws关键字:

                 throws关键字的作用就是当方法中发生异常,而又不想在方法中进行处理时,

                 会使用throws关键字把异常往外抛出,这样调用这个方法的地方就必须要使用

                 throws或者try{}catch(){}进行处理。

 

                 Throws的使用格式:

                 throws关键字在方法结束圆括号后使用,throws后边又会跟上**Exception

                 method() throws **Exception {}

 

3.Java异常的体系

                 Throwable类是 Java 语言中所有错误或异常的超类。其中包括了两个子类:

                 (1)Error类(错误)是Throwable的子类,用于标记严重错误。合理的应用程序不                     应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的,应该查明原因,修改代码逻辑。

例如:

                         StackOverflowError 堆栈溢出

                         IOError                              IO错误

                        

                 (2)Exception类(异常)是Throwable的一种形式的子类,用于指示一种合理的程                     序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用                 户程序去catch它。

例如:

                         (1)RuntimeException运行时异常,是未检查的异常(unchecked exceptions),是如果一切正常的话本不该发生的异常,但是的确发生了。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。 因此,面对unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。

 

                         NullPrintException  空指针异常

                         ArrayIndexOutOfBoundsException 数组下标越界异常

                         ClassCastException 类型转换异常

                         IllegalArgumentException       非法的参数异常

                                 

                         (2) checked exception是已被检查出的异常,是JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。

例如:

                         InterruptedException      线程休眠时的异常

                         IOException                      I/O操作生成的异常

                         EOFException                   输入过程中意外到达文件或流的末尾时的异常

                         FileNotFoundException  打开指定路径名表示的文件失败时的异常

                         SocketException              底层协议中存在错误时的异常

4.java中处理异常的作用

(1)异常提供了从错误状态进行可靠恢复的途径,而不需要退出程序。

(2) Exception可以用来传递消息,并不仅仅是错误让自己解决了就行,需要让外界知道并把处理权交给外界的调用者。

posted @ 2016-08-11 17:16  米瑞蔻马  阅读(129)  评论(0编辑  收藏  举报