1、何为异常?
异常在本质上是一种运行时错误。在不支持异常处理机制的语言中,需要通过手动检查和处理错误(比如常见的错误代码)。Java语言中的异常处理机制采用了面向对象方式,即用对象来描述一段代码中发生的运行时错误(异常)。当异常情况出现时,便会在引起异常的方法中创建表示异常的对象,并将其抛出。在这样的机制下,可以选择在出现异常的方法中捕获并处理异常,也可以选择由方法的调用者来捕获并处理异常。无论采用哪种方式,产生的异常一定会被捕获并被处理。
2、异常的来源:
java语言中的异常产生源头有两个:其一是由java运行时系统生成,这种情况下没有显示的异常抛出;其二是通过代码手动抛出,这种情况下借用关键字throw显示抛出表示异常的对象。
注:手动生成的异常通常用于向方法的调用者报告某些错误条件。
3、异常处理机制涉及的关键字:
java语言中的异常处理机制借用5个关键字来实现:try、catch、throw、throws、finally。在try代码块中封装可能会产生异常的语句,从而对这些语句进行监视。如果在try代码块中发生异常,就会抛出表示异常的对象。并且使用catch进行异常捕获,然后以合理的方式处理异常。try代码块结束后必须要执行的代码放入finally代码块中。
注:系统生成的异常由java运行时系统自动抛出,而手动抛出异常对象则需要使用关键字throw。如果想从方法中抛出异常并将捕获和处理异常的工作交给方法的调用者来做,则需要通过throws子句进行指定。
注:异常处理代码块的一般形式:
try { //block of code to monitor for errors } catch(ExceptionType1 ex0b) { //exception handler for ExceptionType1 } catch(ExceptionType2 ex0b) { //exception handler for ExceptionType2 } //.... finally { //block of code to be executed after try block ends }
5、异常类型
java语言中所有异常的类型都是Throwable的子类。所以,Throwable位于异常类层次中的顶层。Throwable有两个子类Exception和Error,他们将异常划分为两个不同的分支。
注:Exception类用于程序应当捕获的异常,也可用于派生用户自定义异常类型。
注:Error类用于定义常规环境下不希望由程序捕获的异常。此类的异常由java运行时系统使用,并用于表征运行时环境出现了严重的错误。