Java基础知识点总结——异常

4.6.2

异常处理的原理?

异常是指运行时发生的错误或非正常情况,Jvm将出现的错误表示为一个异常出现。

Java语言把异常当作一个对象来处理,他有一个基类(java.lang.Throwable)作为所有异常的父类。

                                                                      Throwable

                                                               Error        Exception   

Java提供了两种异常类:Error与Exception,他们都是Throwable的子类。如上图所示。

1. Error表示错误指代的是程序在运行期间出现的错误,这个错误属于Jvm层次的错误。类似于OutOfMemoryError(堆溢出),这些异常主要是逻辑问题导致的。一般发生时Jvm都将会终止程序的运行。

2. Exception表示可恢复的异常,也就是说可以经过catch处理后进行避免的。Exception又分为检查异常(checked Exception)与运行时异常(runtime Exception)。

2.1检查异常(checked Exception)

  检查异常比如最常见的IO异常,SQL异常,所谓检查性异常就是当你在编写代码时候就要处理的异常,包括两种方式一是try..catch或者是继续Throw继续向上抛出异常。检查性异常发生时并不会导致程序出现错误,进行处理后可继续进行接下来的操作。

2.2 运行时异常(RunTime Exception)

  运行时异常编辑器没有进行强制的捕获或处理,因为运行时异常是发生在程序运行时的。但是为了避免程序在运行时发生异常也可以选择使用try...catch对可能出现的异常进行捕获或者处理。常见的运行时异常包括NullPointerException(空指针异常),ClassCastException(造型异常),ArrayIndexOutOfBoundsException(数组索引越界),数字格式化异常等。      

  当运行时异常产生时,系统会把出现的异常一直向上抛,直到遇见到处理的代码为止。如果没有处理就会抛到最上层。如果是多线程的情况下就用Thread.run()方法抛出,如果程序是单线程就会由Main方法抛出。如果我们在编码的时候没有对运行时异常 进行处理,就会导致线程的中止,或者main方法的终止。              

Java异常处理的时候使用到了多态的概念,好,有些同学可能记不清多态的概念了。简单来说多态发生的前提就是方法的重载或者方法的重写,分为动态绑定与静态绑定。动态绑定指的就是方法的重写。一句话概括就是父类的引用指向子类的对象,实现的  结果却是子类重写以后的。说了这么多,异常处理是按照先捕获子类的异常在捕获父类的异常。如果说先捕获了父类的异常,再去捕获子类异常,那么子类异常的代码块将永远不会执行。                        

猜你喜欢

转载自blog.csdn.net/weixin_39930622/article/details/80693989