java通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时的系统,运行时的系统寻找相应的代码来处理这一异常。通常把生成异常对象并把它提交给运行时系统的过程称为抛出throw一个异常。运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回溯,直到找到包含相应异常处理的方法为止,这一过程称为捕获catch一个异常。
java的异常处理时通过5个关键字来实现的:try,catch,throw,throws,finally
1.try
try语句用大括号{}指定了一段代码,该段代码可能会抛出一个或多个异常。
2.catch
catch语句的参数类似于方法的声明,包括一个异常类型和一个异常对象。异常类型必须为Throwable类的子类,它指明了catch语句所处理的异常类型,异常对象则由运行时系统在try所指的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。
catch语句可以有多个,分别处理不同类型的异常。java运行时系统从上到下分别对每个catch语句处理的异常类型进行检测,直到找到类型相匹配的的catch语句为止。
3.finally
try所显得的代码中,当抛出一个异常时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛出或不抛出异常,也无论catch语句的异常类型是否与所抛出的异常类型一致,finally所指定的代码都要被执行。它提供了同一的出口。通常在finally语句中可以进行资源的清除工作,例如关闭打开的文件等。
4.throws
5.throw
6.try的嵌套
java中的异常也是对象。所有的异常类都派生于java.lang.Throwable类。两个主要的子类Exception类和Error类构成了Java的异常处理体系。
1.Throwable类
是java语言中所有错误或异常的超类。只有当对象是此类或其子类之一的实例时,才能通过java虚拟机或者java throw语句抛出。
Error和Exception是Throwable类的两个子类实例
2.Error类
Error是Throwable的子类,表示程序本身无法恢复的严重错误,用于指示应用程序的严重问题。
3.Exception类
4.RuntimeException