- 前言
- 一、异常是什么?
- 二、通过Throwable对异常及其子类对异常进行描述。
- 三、异常处理的机制
- 四、异常的五个关键字
- 五、Java支持多种Catch结构
- 六、当try-catch块中使用return语句时,执行的状态。
- 七、throw和throws的区别
- 八、自定义异常
- 九、异常链
- 总结
前言
本文主要介绍Java中异常的相关知识,包括异常分类,使用等介绍。
一、异常是什么?
简单来说,java异常是程序上的错误的一种,Java中的错误一种是编译错误,另外一种是运行的错误。
异常就是在程序运行的过程中,意外发生的情况,背离程序本身意图的表现,都可以理解为异常。
Throwable分为异常Exception和Error,而异常分为可检查异常和非检查异常,检查异常在编码编译过程中,编译器要求必须处理的异常。
三、异常处理的机制异常处理的机制分为两种,一种是抛出异常,第二种是捕获异常。抛出异常是指本身不对异常进行处理,而是将异常抛出让调用方处理。而捕获异常是本身捕捉到异常,然后针对异常做一些操作。
Java规定,针对于可查异常必须捕获或者申明及抛出异常。
try、catch、finally、throw(抛出异常)throws(申明异常)
五、Java支持多种Catch结构 六、当try-catch块中使用return语句时,执行的状态。try{
xxx
System.out.println("try 块");
return "0";
}catch(Exception e){
xxx
System.out.println("catch块");
return "1";
}finally{
xxx
System.out.println("finally块");
return "2";
}
无异常情况结果:输出try块,finally块,返回2;
有异常情况:输出catch块,finally块,返回2;
当存在finally时,执行完finally才会执行return语句。
throw是抛出异常,throws是申明异常,例如:
public int method() throws Exception{
xxx
throw new Exception();
}
当方法抛出异常列表中的异常时,方法不处理异常而是抛给调用该方法的方法处理异常。
通过throws抛出异常时,针对可能出现的异常情况,解决方案:
1.throws后接多个异常类型,用逗号隔开。
2.throws后接exception。
当Exception含有检查异常时,编译器会提示异常,当使用throw抛出异常时,只能抛出throwable及其子类对象。
而抛出异常时,有两种解决方案,一种是自己解决掉,另外一种是继续抛出。
继承Exception类并写好构造方法,例如:
public class HotelAgeException extends Exception{
public HotelAgeException() {
super("18岁以下或者80岁以上的人员需要有亲友陪同方可入住");
}
}
九、异常链
异常链就是指多个方法顺序调用,接受异常抛出另外一个异常的状态,例如:
void method1() throws AExpection(){
throw new AException;}
void method2() throws BExpection(){
try{
method1();
}catch(AExpection a){
throw new BException()
}finally{
}
void method3() throws CExpection(){
try{
method2();
}catch(BExpection a){
throw new CException()
}finally{
}
最终只会输出C异常,A,B异常会丢失,解决方法是采用initCause()方法或者是申明异常时增加e参数。
总结本篇学习了Java的异常相关的知识,包括使用异常,异常分类,如何操作,如何自定义异常等。



