异常
Java的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行的程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类。
异常的类型
在Java中的异常类型都是内置类java.lang.Throwable类的子类,即Throwable位于异常类层次结构的顶层,其下有两个异常分类Exception(异常)和Error(错误),Exception类有分为运行时异常(不检查异常,Unchecked Exception)和非运行时异常(检查异常,Checked Exception)
异常处理语句(四种)
- try catch语句
- try catch finally语句
其格式:try{
逻辑程序块;
}catch(Exceptiontype1 e){
处理代码块1;
} catch(Exceptiontype1 e){
处理代码块2;
Throw(e);//抛出异常
}finally{
释放资源代码块;
}
把可能发生异常的语句封装到try语句块中,用以捕获可能发生的异常。如果try语句发生异常,那么一个相应的异常对象就会被抛出,然后catch语句就会根据所抛出的异常对象类型进行捕获,并处理,此时程序将跳过try语句中剩余的语句,转到catch语句块的中。如果try语句块中没有异常发生,那么try块正常结束,其后catch语句被跳过。以上格式无论是否发生异常,finally语句块中的代码都会被执行。 - thorws声明异常
当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部声明这个异常,以便将该异常传递到方法的外部进行处理。
其格式:
returntype method_name(paramList)throws Exception1,Exception2,…{
}
在编写继承代码时要注意,子类在覆盖父类带throws子句的方法时,子类的方法声明中的throws子句不能出现父类对应方法的throws子句中没有的异常类型,因此throws子句可以限制子类的行为,也就是说,子类方法抛出的异常不会超过父类定义的范围。 - thorw 抛出异常
throw语句用来直接抛出一个异常
其格式:
throw ExceptionObject;
当throw语句执行时,它后面的语句将不执行,此时程序转向调用程序,寻找与之相匹配的catch语句,执行相应的异常处理程序。如果没有找到,则再转向上一层的调用程序。这样逐层向上,直到最外层的异常处理程序中止程序并打印出调用栈情况。
Throws关键字与throw关键字的区别: - throws用来声明一个方法可能抛出的所有异常信息,throw则是指抛出的一个具体的异常类型
- 通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
- throws通常不用显示地捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;throw则需要用户自己捕获相关的异常,而后再对其进行相关包装,最后将包装后的异常信息抛出。
自定义异常
自定义异常类必须继承现有的Exception类或其子类来创建。
其语法:
<自定义异常名>
一般将自定义的异常类的类名命名为XXXException
自定义异常类一般含有两个构造方法,一个是无参的默认构造方法,另一个构造方法以字符串形式接收一个定制的异常消息,并将该消息传递给超类的构造方法