前言
try…catch…finally恐怕是大家再熟悉不过的语句了,刚接触的时候感觉用起来也是很简单,逻辑上似乎也是很容易理解。可是随着我们学习和理解的深入,发现这个东西并没有想象中的那么简单。异常处理往往是我们编程时必须时时注意和不得不解决的问题。而我们写程序的时候往往只是被硬性的要求必须写try…catch,必须对异常处理,可是如何处理才合理,如何处理才能让系统更完善考虑的很少。我们对它缺少一个深入而细致的了解。
java异常
异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,
描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。
异常处理流程
当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,在所有的finally块代码被执行和当前线程的所属的ThreadGroup的uncaughtException方法被调用后,遇到异常的当前线程被中止。
异常类层次
Throwable是所有异常的基类,程序中一般不会